是否可以使用PyCrypto加密字节流?

2024-06-16 11:55:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个应用程序,用户上传一个文件,应用程序会自动为他们处理。为了数据安全,我想加密这些文件。这些文件的大小可以从小到大(2MB到30MB以上)不等。 我发现PyCrypto实际上是一个加密/解密包。这些文件经过处理后被读入io.BytesIO(),然后从字节流创建一个文件。我想知道是否可以“加密”字节流,然后创建文件。因此,当我将文件读入io.Bytes()时,我可以对其进行解密并将文件提供给用户


Tags: 文件用户io应用程序字节bytespycrypto数据安全
1条回答
网友
1楼 · 发布于 2024-06-16 11:55:06

PyCrypto已被放弃,无法在Python 3.8中使用,因此这项工作的最佳候选者是pyca/cryptography,但如果确实需要,可以从以下内容开始:

from io import BytesIO

from Crypto import Random
from Crypto.Cipher import AES

payload = BytesIO(b"SomeData")

# Implement PKCS7 padding.
block_size = 16
length = payload.getbuffer().nbytes
to_pad = block_size - length % block_size
payload.seek(length)
payload.write((chr(to_pad) * to_pad).encode("utf8"))
payload.seek(0)

# Setup the cipher.
iv = Random.new().read(block_size)
cipher = AES.new(
    "16-CHAR-LENGTH__",  # Some secret.
    mode=AES.MODE_CBC,
    IV=iv,
)

encrypted = cipher.encrypt(payload.read())

相关问题 更多 >