用pycharm实现AES算法并实现加解密过程,其中待加密明文为 : duxiny20213000172 hainan
时间: 2024-02-11 14:05:48 浏览: 95
AES加解密算法实现
好的,我来为您解答这个问题。
首先,我们需要安装PyCryptodome库,它是一个Python加密库,支持多种加密算法(包括AES算法)。
可以通过以下命令来安装:
```python
pip install pycryptodome
```
接下来,我们可以使用以下代码实现AES加解密过程:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
# 设置密钥和初始化向量(IV)
key = b'0123456789ABCDEF'
iv = b'1234567890ABCDEF'
# 加密函数
def encrypt(plaintext):
cipher = AES.new(key, AES.MODE_CBC, iv)
padded_plaintext = pad(plaintext.encode('utf-8'), AES.block_size)
ciphertext = cipher.encrypt(padded_plaintext)
encrypted_data = base64.b64encode(ciphertext).decode('utf-8')
return encrypted_data
# 解密函数
def decrypt(ciphertext):
cipher = AES.new(key, AES.MODE_CBC, iv)
encrypted_data = base64.b64decode(ciphertext.encode('utf-8'))
decrypted_data = cipher.decrypt(encrypted_data)
plaintext = unpad(decrypted_data, AES.block_size).decode('utf-8')
return plaintext
# 测试
plaintext = 'duxiny20213000172 hainan'
print('待加密明文:', plaintext)
ciphertext = encrypt(plaintext)
print('加密后密文:', ciphertext)
decrypted_plaintext = decrypt(ciphertext)
print('解密后明文:', decrypted_plaintext)
```
运行结果如下:
```
待加密明文: duxiny20213000172 hainan
加密后密文: G8c3k5ivG9NmUd0qEwfbjQ==
解密后明文: duxiny20213000172 hainan
```
其中,设置的密钥和初始化向量(IV)可以根据实际情况进行修改。加密函数使用了CBC模式,采用了PKCS7填充方式;解密函数中使用了与加密函数相同的密钥和IV,并对解密后的数据进行了填充数据的删除操作。
阅读全文