首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Bytes &List& Encryption

Python Bytes &List& Encryption
EN

Stack Overflow用户
提问于 2022-04-12 10:07:11
回答 2查看 112关注 0票数 -1

我使用Fernet用这一实现加密我的数据。让我们假设我有以下三个数据:

代码语言:javascript
复制
data = [fernet.encrypt("Hello".encode()), fernet.encrypt("Stack".encode()), fernet.encrypt("Overflow".encode())]

在此操作之后,Python会自动将bytes转换为string,并将它们写入csv文件。当我需要解密它们时,就像:

代码语言:javascript
复制
fernet.decrypt(data)

它给了我一个错误,就像你只能解密字节等等。我还检查了我在csv文件中的数据已经是字节,但字符串形式。

代码语言:javascript
复制
b'gAAAAABiVUw5BzOkOv3VxlV5xa57Iaf0R4dzPbgsrnheAME8uYeslCZfTx9GeyRWe7l9VMM-gdDXiPZ4zsAXoXkG6T1dyXH6EztcqirrPhXX3YCt65_3xXvykVTDPdbEXs51cHvR-3HH'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-12 10:29:36

一种用于编码、写入文本、读取和解码的端到端用法示例.

Fernet文档可以是在此参考

代码语言:javascript
复制
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对象),如下所示:

代码语言:javascript
复制
b'gAAAAABiVVOOeO-hUG2QaKCVOyshntpbqVbxnexIVsFr7ttBGmKhHlDeM7jkTCjPPGphZxbh4D15X82pts3hKes12DjzwI8_jQ=='

写、读和解密:

代码语言:javascript
复制
# 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()

输出:

代码语言:javascript
复制
'Hello'
票数 2
EN

Stack Overflow用户

发布于 2022-04-12 10:12:40

fernet.encrypt返回bytes (我猜想,您不是具体使用哪个实现,我猜是这一个)。将它们.decode()为字符串。然后您的CSV将包含“gAAA.”,而不是“b‘gAAA.”。当从CSV再次读取这些字符串时,在将字符串传递给.encode()之前,先将其传递给fernet.decrypt

  • fernet.encrypt返回bytes
  • bytes.decode()bytes转化为str
  • CSV想要str
  • str.encode()str转化为bytes
  • fernet.decrypt想要bytes
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71840766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档