为了账号安全,请及时绑定邮箱和手机立即绑定

Python:无法从 hashlib 导入 scrypt

Python:无法从 hashlib 导入 scrypt

茅侃侃 2021-12-17 10:32:41
我需要使用 scrypt 算法,因为我已经在使用 hashlib,我想......为什么不呢?我已经检查过了,它指出 OpenSSL 1.1+ 是必要的。另外,根据官方文档:hashlib.scrypt(密码,*,盐,n,r,p,maxmem=0,dklen=64)...可用性:OpenSSL 1.1+。3.6 版中的新功能。我确保拥有最新版本的 openssl:# openssl versionOpenSSL 1.1.1b  26 Feb 2019我还尝试运行 python3.6 和 python3 (3.4) 并且都说他们不能导入 scrypt:# python3.6Python 3.6.5 (default, Apr 10 2018, 17:08:37)[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linuxType "help", "copyright", "credits" or "license" for more information.>>> from hashlib import pbkdf2_hmac>>> from hashlib import scryptTraceback (most recent call last):  File "<stdin>", line 1, in <module>ImportError: cannot import name 'scrypt'如您所见,其他方法如pbkdf2_hmac工作。可能有什么问题?另外,*in 是hashlib.scrypt(password, *, salt, n, r, p, maxmem=0, dklen=64)什么?
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

我的 mac 正在运行OpenSSL 1.1.1  11 Sep 2018。我用 python3.6 重现了你的导入症状,发现scrypt用 python3.7 导入就好了。您可能会考虑尝试 3.7。

*签名中的in 是一种相对较新的语法,它标志着位置参数的结束。所以你不能调用 as scrypt('secret', 'mySalt')。您需要指定关键字参数,例如scrypt('secret', salt='mySalt'). 目的是通过使用错误的 arg 顺序使错误调用变得更加困难。这对于加密 API 尤其重要,因为其中许多参数不透明且难以验证。


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 295 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信