0

我正在尝试制作一个对文件进行编码和解码以确保安全的应用程序。

我想要实现的是:

我输入了一个字符串'something',它每次都会生成一个键'some_key='。

我试过这样做:

import os
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.backends import default_backend
from cryptography.fernet import Fernet

backend = default_backend()
salt = os.urandom(16)

kdf = PBKDF2HMAC(
    algorithm=hashes.SHA256(),
    length=32,
    salt=salt,
    iterations=100000,
    backend=backend
)
key = base64.urlsafe_b64encode(kdf.derive(b"my great password"))

f = Fernet(f)

但我尝试做的是生成随机密钥。

我不知道该怎么办。请帮忙!

4

1 回答 1

1

当使用 PBKDF2、scrypt 或 Argon2 等基于密码的密钥派生函数 (KDF) 时,您需要密码和盐。salt 的目的是让使用相同的密码短语每次都产生不同的密钥。否则,每个使用相同密码的人都会派生出相同的密钥,这会带来很多安全问题。

这意味着您需要将盐与文件一起存储,以便您可以派生相同的密钥。由于盐必须是唯一的但不是秘密的,因此您可以在加密数据前加上盐,然后在解密时将其剥离。

于 2021-01-17T00:27:21.093 回答