【发布时间】:2023-03-16 20:23:01
【问题描述】:
我试图在 Python 上重现这个算法
(双管道表示在密码短语中添加 0x1 或 0x2)
s1 = scrypt(key=(passphrase||0x1), salt=(salt||0x1), N=2^18, r=8, p=1, dkLen=32)
s2 = pbkdf2(key=(passphrase||0x2), salt=(salt||0x2), c=2^16, dkLen=32, prf=HMAC_SHA256)
keypair = generate_bitcoin_keypair(s1 ⊕ s2)
我做了这个:
s1 = pyscrypt.hash(password=phrase+'\x01', salt=saltPhrase+'\x01', N=16, r=8, p=1, dkLen=32)
s2 = pbkdf2(phrase+'\x02', saltPhrase+'\x02', 1, keylen=32, prf='hmac-sha256')
newWallet = BitcoinKeypair.from_passphrase(''.join(chr(ord(a) ^ ord(b)) for a,b in zip(s1,s2)))
问题是它不能正常工作,因为它生成了这个
bitcoin address: 1HvAip4QGWqPJoh8nxLmRAXtbuVj9AKGHq
Wif: 5Kd3D34oALv33x7RMAPrrsNtidZjQekdWHXWGXW6cs2SnRkKUR2
但正确的输出是这样的:
bitcoin address: 1MGKWPZEqJh9JzCPYYsKFEo9w8E2GXmzA7
Wif: 5KXwsERJKvUZde3qHboJFz1gF6B15Xt7TB22bRWoGzgN3FHxqyR
有人可以帮助我吗?谢谢。
这里有完整的代码:http://pastebin.com/QL0tQ83v
要使用此脚本,您需要安装以下库:
pip install pyscrypt passlib coinkit
【问题讨论】:
-
请解释它是如何无法正常工作的。
标签: python cryptography python-2.x pbkdf2 scrypt