首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:无法从hashlib导入scrypt

Python:无法从hashlib导入scrypt
EN

Stack Overflow用户
提问于 2019-03-26 21:41:02
回答 1查看 2.2K关注 0票数 2

我需要使用闪烁算法,因为我已经在使用hashlib了,我想.为什么不行?我已经检查了,并指出OpenSSL 1.1+是必要的。另外,根据官方医生的说法

Hashlib.scrypt(密码,*,salt,n,r,p,maxmem=0,dklen=64) ..。 可用性: OpenSSL 1.1+。 新版本3.6。

我确保了openssl的最新版本:

代码语言:javascript
复制
# openssl version
OpenSSL 1.1.1b  26 Feb 2019

我还尝试运行python3.6和python3 (3.4),两者都说它们不能导入氪星:

代码语言:javascript
复制
# 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)中是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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是不透明的,很难验证。

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

https://stackoverflow.com/questions/55366629

复制
相关文章

相似问题

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