微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么python关键派生函数“需要”一个可选参数:后端?

如何解决为什么python关键派生函数“需要”一个可选参数:后端?

我正在尝试使用 python 的加密库来生成密码相关的密钥:

两个函数都是从文档中复制出来的:https://cryptography.io/en/latest/hazmat/primitives/key-derivation-functions/ 对于 Scrypt 和 PBKDF2HMAC 后端被列为可选参数,但是当我运行这些函数时,我得到了提升:

PS D:\code\Fiver\flohar> & C:/Users/mpnlo/AppData/Local/Programs/Python/python38-32/python.exe d:/code/Fiver/flohar/passwordManager.py
Traceback (most recent call last):
  File "d:/code/Fiver/flohar/passwordManager.py",line 202,in <module>
    main()
  File "d:/code/Fiver/flohar/passwordManager.py",line 152,in main
    key = generateKey('Password')
  File "d:/code/Fiver/flohar/passwordManager.py",line 24,in generateKey
    kdf = Scrypt(
TypeError: __init__() missing 1 required positional argument: 'backend'
PS D:\code\Fiver\flohar>
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.scrypt import Scrypt

def generateKey(master):
    salt = b'H\x1d\tMg\xc9\xe3\xec\xbeU\xee\x03\xec\x18\xf1U'
    kdf = Scrypt(
        length=32,salt=salt,n=2**14,r=8,p=1,)
    return base64.urlsafe_b64encode(kdf.derive(master))
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

def generateKey(master):
    salt = b'H\x1d\tMg\xc9\xe3\xec\xbeU\xee\x03\xec\x18\xf1U'
    kdf = PBKDF2HMAC(
        algorithm=hashes.SHA256(),length=32,iterations=100000,)
    return base64.urlsafe_b64encode(kdf.derive(master))

模块是否收到了现在需要后端的更新,或者我做错了什么,当导入认后端并使用它们或仅使用 None 作为后端参数时,我收到一个错误,表明后端不支持给定的算法。

解决方法

我安装了错误版本的密码学,感谢 Topaco 向我指出这一点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。