我使用Fernet用这一实现加密我的数据。让我们假设我有以下三个数据:
data = [fernet.encrypt("Hello".encode()), fernet.encrypt("Stack".encode()), fernet.encrypt("Overflow".encode())]在此操作之后,Python会自动将bytes转换为string,并将它们写入csv文件。当我需要解密它们时,就像:
fernet.decrypt(data)它给了我一个错误,就像你只能解密字节等等。我还检查了我在csv文件中的数据已经是字节,但字符串形式。
b'gAAAAABiVUw5BzOkOv3VxlV5xa57Iaf0R4dzPbgsrnheAME8uYeslCZfTx9GeyRWe7l9VMM-gdDXiPZ4zsAXoXkG6T1dyXH6EztcqirrPhXX3YCt65_3xXvykVTDPdbEXs51cHvR-3HH'发布于 2022-04-12 10:29:36
一种用于编码、写入文本、读取和解码的端到端用法示例.
Fernet文档可以是在此参考。
from cryptography.fernet import Fernet
# Auto-generate a secret key.
key = Fernet.generate_key()
f = Fernet(key)
# Encode the string 'Hello' and encrypt.
encoded = f.encrypt('Hello'.encode())这将创建一个字节串(一个bytes对象),如下所示:
b'gAAAAABiVVOOeO-hUG2QaKCVOyshntpbqVbxnexIVsFr7ttBGmKhHlDeM7jkTCjPPGphZxbh4D15X82pts3hKes12DjzwI8_jQ=='写、读和解密:
# Write the *decoded* encrypted string to a TXT file.
with open('/tmp/encoded.txt', 'w') as fh:
fh.write(encoded.decode())
# Read the encrypted string from TXT file.
with open('/tmp/encoded.txt') as fh:
encoded = fh.read()
# Encode the string, pass through fernet for decryption,
# and decode the bytes output.
f.decrypt(encoded.encode()).decode()输出:
'Hello'发布于 2022-04-12 10:12:40
fernet.encrypt返回bytes (我猜想,您不是具体使用哪个实现,我猜是这一个)。将它们.decode()为字符串。然后您的CSV将包含“gAAA.”,而不是“b‘gAAA.”。当从CSV再次读取这些字符串时,在将字符串传递给.encode()之前,先将其传递给fernet.decrypt。
fernet.encrypt返回bytesbytes.decode()将bytes转化为strstrstr.encode()将str转化为bytesfernet.decrypt想要byteshttps://stackoverflow.com/questions/71840766
复制相似问题