我正在做的是生成“虚拟”钱包,从原始熵中检索一个助记符密码短语和钱包,这个熵是使用secrets.randbits(128)
生成的——产生一对有效的bip39密钥。你知道吗
我遇到的错误是:
ValueError: 125 bits provided; expected: (128, 160, 192, 224, 256)
它可以从122位到127位不等。它通常对一行中的多个错误表示相同的位数,即125 bits provided
3次,然后切换到122 bits provided
2次,然后在第6次尝试时工作。你知道吗
我正在使用btclib–完整的功能是
def create_passphrase():
memo = bip39.mnemonic_from_raw_entropy(secrets.randbits(128) , 'en')
print(mnemo)
return mnemo
对不起,我遗漏了一些明显的东西。你知道吗
这是btclib中的一个bug。你知道吗
函数^{} 调用^{} ,后者调用^{} 。你知道吗
调用
entropy.str_from_entropy()
时,使用整数作为其entr
参数,它会尝试将该整数转换为表示位的字符串here:这是错误的:任何传入的整数,如果它是真正随机的,只会被转换为大约一半时间内所期望的位数。要了解原因,请考虑以下随机数据示例(为了简单起见,我将使用8位而不是128位,但原理是相同的):
如您所见,btclib使用的转换方法去掉了任何前导零,导致产生了长度错误的字符串。你知道吗
一种解决方法是自己将
secrets.randbits(128)
的结果转换为适当的字符串,并传递:…假设btclib里没有其他虫子等着咬你。你知道吗
谢谢你的报告。你知道吗
丢失前导零符合Electrum熵->;记忆行为,但导致BIP39出现错误。你知道吗
它现在固定在主分支上: https://github.com/dginst/btclib/commit/f0f802ef3e31ae74e84964f0ec04d1180f42da27
相关问题 更多 >
编程相关推荐