AES加密算法python
时间: 2023-06-23 22:58:28 浏览: 142
以下是使用Python中的pycryptodome模块进行AES加密和解密的示例代码:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
# 加密函数
def encrypt_AES(data, key, iv):
cipher = AES.new(key, AES.MODE_CBC, iv)
encrypted = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size))
# 将加密后的数据进行base64编码
return base64.b64encode(encrypted).decode('utf-8')
# 解密函数
def decrypt_AES(data, key, iv):
cipher = AES.new(key, AES.MODE_CBC, iv)
# 先将base64编码的数据解码
decrypted = cipher.decrypt(base64.b64decode(data))
# 去除解密后的数据中的填充字节
return unpad(decrypted, AES.block_size).decode('utf-8')
# 测试代码
if __name__ == '__main__':
key = b'sixteen byte key'
iv = b'initial vector '
data = 'hello world!'
encrypted_data = encrypt_AES(data, key, iv)
print('加密后的数据:', encrypted_data)
decrypted_data = decrypt_AES(encrypted_data, key, iv)
print('解密后的数据:', decrypted_data)
```
以上代码中,我们使用16字节的密钥和16字节的初始向量(IV)进行AES加密和解密,同时对加密后的数据进行了base64编码,使其更易于传输。
阅读全文