我需要使用python加密大文件。做一些在线研究提示我几个模块。我选择使用什么有点困惑。
我想确保它必须尽可能高效地使用python。
什么是最有效的python AES 256加密模块?
答案 0 :(得分:0)
如果您的硬件支持,则可以尝试支持AES-NI模式的'PyCryptodome'软件包。 PyCryptodome支持256位密钥的AES加密。 如果您寻求加密+身份验证,则可以使用GCM模式。如果您不希望进行身份验证,则可以使用CTR模式。
CTR模式的代码示例:
from Crypto.Cipher import AES
# encryption
cipher = AES.new(key_bytes, AES.MODE_CTR, use_aesni='True')
ciphertext = cipher.encrypt(data_as_bytes)
nonce = cipher.nonce
# decryption
cipher = AES.new(key_bytes, AES.MODE_CTR, nonce=nonce, use_aesni='True')
plaintext_as_bytes = cipher.decrypt(ciphertext)
GCM模式的代码示例:
from Crypto.Cipher import AES
# encryption
cipher = AES.new(key_bytes, AES.MODE_GCM, use_aesni='True')
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data_as_bytes)
# decryption
cipher = AES.new(key_bytes, AES.MODE_GCM, nonce=nonce, use_aesni='True')
plaintext_as_bytes = cipher.decrypt(ciphertext)
try:
cipher.verify(tag)
print("The message is authenticated")
except ValueError:
print("Key incorrect or message corrupted")
要检查硬件是否支持AES-NI模式,可以检查答案here。