在python中进行AES 256bit加密的有效方法

时间:2017-02-09 23:17:18

标签: python encryption aes

我需要使用python加密大文件。做一些在线研究提示我几个模块。我选择使用什么有点困惑。

我想确保它必须尽可能高效地使用python。

什么是最有效的python AES 256加密模块?

1 个答案:

答案 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