во всяком случае я в конечном итоге написание этого питона 2.5 скрипта (а затем решил загрузить его здесь, в случае, если это полезно кому-либо еще)
Код:
импорт ECDSA
secp256k1curve = ecdsa.ellipticcurve.CurveFp (115792089237316195423570985008687907853269984665640564039457584007908834671663,0,7)
secp256k1point = ecdsa.ellipticcurve.Point (secp256k1curve, 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8,0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141)
secp256k1 = ecdsa.curves.Curve ( 'secp256k1', secp256k1curve, secp256k1point, (1,3,132,0,10))
# --------------------------------------
импорт binascii, hashlib
Защиту Адди (рк):
ПКО = ecdsa.SigningKey.from_secret_exponent (рк, secp256k1)
Публичный = binascii.hexlify (pko.get_verifying_key (). to_string ())
pubkey2 = hashlib.sha256 (binascii.unhexlify ( '04' + Публичных)). hexdigest ()
pubkey3 = hashlib.new ( 'ripemd160', binascii.unhexlify (pubkey2)). hexdigest ()
pubkey4 = hashlib.sha256 (binascii.unhexlify ( '00' + pubkey3)). hexdigest ()
pubkey5 = hashlib.sha256 (binascii.unhexlify (pubkey4)). hexdigest ()
pubkey6 = pubkey3 + pubkey5 [8]
pubnum = INT (pubkey6,16)
pubnumlist = []
в то время как pubnum = 0: pubnumlist.append (pubnum% 58); pubnum / = 58
адрес = «»
для л в [ «123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz» [х] для й в pubnumlist]:
адрес = L + адрес
возвращение «1» + адрес
secp256k1curve = ecdsa.ellipticcurve.CurveFp (115792089237316195423570985008687907853269984665640564039457584007908834671663,0,7)
secp256k1point = ecdsa.ellipticcurve.Point (secp256k1curve, 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8,0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141)
secp256k1 = ecdsa.curves.Curve ( 'secp256k1', secp256k1curve, secp256k1point, (1,3,132,0,10))
# --------------------------------------
импорт binascii, hashlib
Защиту Адди (рк):
ПКО = ecdsa.SigningKey.from_secret_exponent (рк, secp256k1)
Публичный = binascii.hexlify (pko.get_verifying_key (). to_string ())
pubkey2 = hashlib.sha256 (binascii.unhexlify ( '04' + Публичных)). hexdigest ()
pubkey3 = hashlib.new ( 'ripemd160', binascii.unhexlify (pubkey2)). hexdigest ()
pubkey4 = hashlib.sha256 (binascii.unhexlify ( '00' + pubkey3)). hexdigest ()
pubkey5 = hashlib.sha256 (binascii.unhexlify (pubkey4)). hexdigest ()
pubkey6 = pubkey3 + pubkey5 [8]
pubnum = INT (pubkey6,16)
pubnumlist = []
в то время как pubnum = 0: pubnumlist.append (pubnum% 58); pubnum / = 58
адрес = «»
для л в [ «123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz» [х] для й в pubnumlist]:
адрес = L + адрес
возвращение «1» + адрес
Код:
печать Адди (0x18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725)
печать Адди (интермедиат (hashlib.sha256 ( «что-то маленькое и легко запомнить, но трудно угадать»). hexdigest (), 16))
печать Адди (интермедиат (hashlib.sha256 (файл ( 'hiddeninplainsight.jpg', 'гь +'). чтения ()). hexdigest (), 16))
печать Адди (интермедиат (hashlib.sha256 ( «что-то маленькое и легко запомнить, но трудно угадать»). hexdigest (), 16))
печать Адди (интермедиат (hashlib.sha256 (файл ( 'hiddeninplainsight.jpg', 'гь +'). чтения ()). hexdigest (), 16))
Код использует библиотеку ECDSA, которую можно найти Вот.
Функция принимает адрес закрытый ключ и возвращает соответствующий адрес Bitcoin.
Последние две строки имеют некоторые практические применения функции адреса. Так как функция sha256 хэша возвращает длинное значение 256 битного, он может быть использован для создания закрытого ключа. Это полезно, если вы хотите, чтобы иметь адрес Bitcoin и закрытый ключ, который вы можете помнить, не имея записать его в любом месте, или если вы хотите использовать файл, который вы имеете на вашем компьютере в качестве ключа. Если вы хотите потратить монеты, которые у вас есть в этом адресе, все, что вам нужно сделать, это использовать ту же функцию, чтобы сгенерировать закрытый ключ и адрес.
ПРЕДУПРЕЖДЕНИЕ № 1: используя файл, который вы имеете на вашем компьютере или короткое предложение, чтобы сгенерировать закрытый ключ / пара адресов делает его намного проще для атакующего угадать секретный ключ. Вместо того, чтобы попытаться 2 ^ 256 возможностей, у них есть только попробовать файлы на вашем компьютере, по одному или вашей любимой книги / игры / свой день рождения ...
ПРЕДУПРЕЖДЕНИЕ # 2: Я только что сделал этот сценарий сегодня, и я довольно новыми для Bitcoin. Используйте на свой риск !
woooo пять постов я отсюда