首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何克服“salt必须是字节字符串错误”?

如何克服“salt必须是字节字符串错误”?
EN

Stack Overflow用户
提问于 2020-08-26 12:47:04
回答 1查看 261关注 0票数 0

早上好,

我正在尝试用decrypt_bitcoinj_seed.py恢复我的多位HD种子词,我不知道是否有人使用过decrypt_bitcoinj_seed.py,但是在它的库中运行了另一个名为common.py的python脚本之后,我得到了一个错误:raise TypeError('salt must be a byte string')

这个python脚本有很多可能抛出的错误,所以如果这个脚本被克服了,就会有其他的错误出现。(请参见底部的代码。)下面的代码显示了salt错误。

代码语言:javascript
运行
复制
C:\Python38\decrypt_bitcoinj_seed-master>py decrypt_bitcoinj_seed.py
Traceback (most recent call last):
  File "decrypt_bitcoinj_seed.py", line 319, in <module>
    wallet = load_wallet(wallet_file, get_password)
  File "decrypt_bitcoinj_seed.py", line 132, in load_wallet
    key  = pylibscrypt.scrypt(password.encode('utf_16_be'), salt, olen=32)
  File "C:\Python38\lib\site-packages\pylibscrypt\hashlibscrypt.py", line 49, in scrypt
    check_args(password, salt, N, r, p, olen)
  File "C:\Python38\lib\site-packages\pylibscrypt\common.py", line 49, in check_args
    raise TypeError('salt must be a byte string')
TypeError: salt must be a byte string

是否有人知道如何编辑盐类,使其成为字节字符串,或者是否有更好的替代方案?而且,这并不重要,因为我的编程知识很少,为什么脚本需要所有下面的代码才能破解种子词?- password, salt, N, r, p, olen好消息是"check args“密码脚本部分传递了。下面是我前面提到的关于抛出错误的所有可能性的代码:

代码语言:javascript
运行
复制
    if not isinstance(password, bytes):
        raise TypeError('password must be a byte string')
    if not isinstance(salt, bytes):
        raise TypeError('salt must be a byte string')
    if not isinstance(N, numbers.Integral):
        raise TypeError('N must be an integer')
    if not isinstance(r, numbers.Integral):
        raise TypeError('r must be an integer')
    if not isinstance(p, numbers.Integral):
        raise TypeError('p must be an integer')
    if not isinstance(olen, numbers.Integral):
        raise TypeError('length must be an integer')
    if N > 2**63:
        raise ValueError('N cannot be larger than 2**63')
    if (N & (N - 1)) or N < 2:
        raise ValueError('N must be a power of two larger than 1')
    if r <= 0:
        raise ValueError('r must be positive')
    if p <= 0:
        raise ValueError('p must be positive')
    if r * p >= 2**30:
        raise ValueError('r * p must be less than 2 ** 30')
    if olen <= 0:
        raise ValueError('length must be positive')

如果出现其他错误,我会把它们发到这里;但我希望它能起作用,还我的种子词!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63598026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档