python aes加密解密
时间: 2023-06-21 19:04:31 浏览: 184
Python中可以使用pycryptodome库进行AES加密解密,示例代码如下:
```python
from Crypto.Cipher import AES
import base64
# 填充函数,使加密数据的长度是AES.block_size的整数倍
def add_to_16(value):
while len(value) % 16 != 0:
value += '\0'
return str.encode(value) # 返回bytes类型数据
# 加密函数
def encrypt(key, text):
aes = AES.new(add_to_16(key), AES.MODE_ECB) # 初始化AES加密器,ECB模式
encrypted_text = aes.encrypt(add_to_16(text)) # 加密
return str(base64.encodebytes(encrypted_text), encoding='utf-8').replace('\n', '') # base64加密,并返回字符串类型数据
# 解密函数
def decrypt(key, text):
aes = AES.new(add_to_16(key), AES.MODE_ECB) # 初始化AES解密器,ECB模式
decrypted_text = aes.decrypt(base64.decodebytes(bytes(text, encoding='utf-8'))) # 先base64解密,再解密
return str(decrypted_text.rstrip(b'\0'), encoding='utf-8') # 返回字符串类型数据,去除末尾的'\0'
# 测试
if __name__ == '__main__':
key = '1234567890123456' # 密钥必须是16、24或32位长度
text = 'Hello, world!'
encrypted_text = encrypt(key, text)
print('加密后的数据:', encrypted_text)
decrypted_text = decrypt(key, encrypted_text)
print('解密后的数据:', decrypted_text)
```
需要注意的是,AES加密解密的密钥必须是16、24或32位长度。如果长度不足,需要填充到指定长度。本例中使用的是ECB模式,不建议在实际应用中使用。实际应用中应该使用更加安全的CBC模式,并且需要在加密和解密过程中使用随机生成的IV向量。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![apk](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)