在Python中使用AES-GCM进行加密解密操作

2023-03-27 00:00:00 python aes

在 Python 中使用 AES-GCM 进行加密解密操作,可以使用 Cryptography 模块。以下是一个使用 Cryptography 模块进行 AES-GCM 加密解密操作的示例:

from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os

# 生成密钥和随机数
key = os.urandom(32)
nonce = os.urandom(12)

# 加密明文
plaintext = b"pidancode.com"
aad = b"nonce"
aesgcm = AESGCM(key)
ciphertext = aesgcm.encrypt(nonce, plaintext, aad)

# 输出密文
print("加密后的数据:", ciphertext)

# 解密密文
aesgcm = AESGCM(key)
decrypted_plaintext = aesgcm.decrypt(nonce, ciphertext, aad)

# 输出解密后的明文
print("解密后的数据:", decrypted_plaintext)

在上面的代码中,我们首先使用 os.urandom() 函数生成一个 32 字节的密钥和一个 12 字节的随机数。然后,我们使用 AESGCM 类创建一个 AES-GCM 实例,并使用 encrypt() 方法加密明文。encrypt() 方法接受三个参数:随机数、明文和附加认证数据(AAD)。加密后,我们输出密文。

接下来,我们使用 decrypt() 方法解密密文。decrypt() 方法接受与 encrypt() 方法相同的三个参数:随机数、密文和附加认证数据(AAD)。解密后,我们输出解密后的明文。

请注意,在上面的代码中,我们使用字节串而不是 Unicode 字符串,这是因为 Cryptography 模块只接受字节串而不是 Unicode 字符串。

相关文章