0

パスワードに依存するキーを生成するために、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,
        salt=salt,
        iterations=100000,
    )
    return base64.urlsafe_b64encode(kdf.derive(master))

モジュールがバックエンドを必要とするアップデートを受け取ったのでしょうか、それとも私が何か間違ったことをしているのですか?

4

1 に答える 1

0

間違ったバージョンの暗号がインストールされていました。これを指摘してくれた Topaco に感謝します。

于 2021-06-22T22:17:03.103 に答える