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

问题描述 投票:0回答:1

我正在开发一个应用程序,用户在该应用程序上载文件,并且该应用程序会自动为其处理文件。为了数据安全,我想对这些文件进行加密。这些文件的大小可以从很小到很大(2MB到30MB以上)不等。我遇到了PyCrypto作为事实上的加密/解密包。处理完文件后,将它们读入io.BytesIO(),然后从字节流中创建文件。我想知道是否可以“加密”字节流,然后创建文件。这样,当我将文件读入io.Bytes()时,便可以解密该文件并将其提供给用户。

python django python-3.x pycrypto
1个回答
0
投票

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())
© www.soinside.com 2019 - 2024. All rights reserved.