当前位置:首页 > 60秒读懂世界 > 使用Python实现AES加密解密

使用Python实现AES加密解密

一叶知秋2024-08-04 13:11:4560秒读懂世界23

AES(高级加密标准)是一种对称密钥加密的块加密算法。在Python中,我们可以使用pycryptodome库来实现AES加密和解密。如果你还没有安装这个库,可以使用pip进行安装:

pip install pycryptodome

下面是一个简单的例子,展示了如何使用AES加密和解密数据:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad

# 生成一个随机的16字节(128位)密钥
key = get_random_bytes(16)

# 要加密的数据
data = b"This is a secret message"

# 创建一个AES实例
cipher = AES.new(key, AES.MODE_ECB)

# 加密数据
encrypted_data = cipher.encrypt(pad(data, AES.block_size))

print("Encrypted data:", encrypted_data)

# 创建一个新的AES实例用于解密
decipher = AES.new(key, AES.MODE_ECB)

# 解密数据
decrypted_data = unpad(decipher.decrypt(encrypted_data), AES.block_size)

print("Decrypted data:", decrypted_data)

在这个例子中,我们首先生成了一个随机的16字节密钥,然后创建了一个AES实例,并使用它来加密数据。加密后的数据被打印出来。接着,我们创建了另一个AES实例用于解密,并使用它来解密之前加密的数据。 解密后的数据也被打印出来。

请注意,AES.MODE_ECB是最简单的模式,但在实际应用中通常不推荐使用,因为它不提供任何形式的填充或错误检测。更常见的模式是AES.MODE_CBCAES.MODE_CFBAES.MODE_OFBAES.MODE_CTR等,它们提供了更好的安全性和/或性能特性。

Crypto.Util.Padding模块用于处理数据的填充和去填充,因为AES要求输入的数据必须是块大小的倍数(对于AES-128,块大小是16字节)。

扫描二维码推送至手机访问。

版权声明:本站部分文章来自AI创作、互联网收集,请查看免责申明

本文链接:https://www.yyzq.team/post/371407.html

新工具上线:
分享给朋友: