我目前正在学习python并且正在尝试制作一个加密程序,每次加密相同的消息,我用Fernet实现了加密过程。
import base64
import os
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
password_provided = 'examplepassword'
kpassword = password_provided.encode()
salt = b'H&\xb6\n\xe6@\xdf\x13\x88\x98 Z\xf0\xea,\xca\x05\xd7\x99\x105\xa8\xa2{\xa9F\xe0\x91\x89c)\xf8%@]"u<\xe03|\xe2\re]\'\xb7\x89O2\xf9\x0bY\xf5\xb6<\x80z\\bM\x8dDx'
kdf = PBKDF2HMAC(
algorithm = hashes.SHA256,
length = 32,
salt = salt,
iterations = 100000,
backend = default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(kpassword))
k = Fernet(key)
example = k.encrypt(b'ABC')
print(example)
这段代码按我的预期工作并加密一次,但 Fernet 每次都以不同的方式对其进行加密,我不知道为什么。如果有任何方法可以使当前程序每次都以相同的方式加密消息,请提供帮助,或者是否有另一种方法来完成我正在尝试做的事情。
以防万一你建议,不,我 90% 确定盐不是问题,因为我尝试过使用更长和更短的盐os.urandom(),我也尝试过更改密码。
编辑:我试图加密一个人提供的输入,然后其他人提供相同的输入,我想比较加密的
万千封印
拉风的咖菲猫
慕丝7291255
随时随地看视频慕课网APP
相关分类