我需要使用闪烁算法,因为我已经在使用hashlib了,我想.为什么不行?我已经检查了这,并指出OpenSSL 1.1+是必要的。另外,根据官方医生的说法
Hashlib.scrypt(密码,*,salt,n,r,p,maxmem=0,dklen=64) ..。 可用性: OpenSSL 1.1+。 新版本3.6。
我确保了openssl的最新版本:
# openssl version
OpenSSL 1.1.1b 26 Feb 2019我还尝试运行python3.6和python3 (3.4),两者都说它们不能导入氪星:
# python3.6
Python 3.6.5 (default, Apr 10 2018, 17:08:37)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from hashlib import pbkdf2_hmac
>>> from hashlib import scrypt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'scrypt'正如您所看到的,像pbkdf2_hmac这样的其他方法可以工作。有什么不对的?
另外,*在hashlib.scrypt(password, *, salt, n, r, p, maxmem=0, dklen=64)中是什么?
发布于 2019-03-27 01:56:21
我的mac正在和OpenSSL 1.1.1 11 Sep 2018一起运行。我用python3.6复制了您的进口症状,发现scrypt在python3.7中导入得很好。你可以考虑试试3.7。
签名中的*是一种相对较新的语法,它标志着位置参数的结束。所以您不能以scrypt('secret', 'mySalt')的形式调用。您需要指定关键字args,例如scrypt('secret', salt='mySalt')。其意图是通过使用错误的arg命令,使错误调用变得更加困难。这对于加密API来说尤其重要,因为在这些API中,许多are是不透明的,很难验证。
https://stackoverflow.com/questions/55366629
复制相似问题