AES密码算法Python实现
时间: 2023-11-05 15:17:55 浏览: 29
以下是一个使用AES密码算法进行加密和解密文本消息的Python实现:
```python
import binascii
from Crypto.Cipher import AES
# 密钥,长度必须是16、24或32字节(128、192或256位)
key = b'secret_key_123456'
# 初始化密码算法
cipher = AES.new(key, AES.MODE_ECB)
# 待加密的消息,长度必须是16的倍数
message = b'Hello World 1234'
# 加密
msg_encrypted = cipher.encrypt(message)
print("加密后的消息:", binascii.hexlify(msg_encrypted))
# 解密
msg_decrypted = cipher.decrypt(msg_encrypted)
print("解密后的消息:", msg_decrypted.decode())
```
注意,如果要使用CBC、CFB等模式,需要添加一个初始向量参数。此外,同样需要注意避免在代码中明文存储密钥和消息。
相关问题
AES密码算法Python实现 EBC模式
以下是使用Python实现AES密码算法的ECB模式的示例代码:
```python
from Crypto.Cipher import AES
import base64
# 设置密钥和明文
key = '1234567890123456'
text = 'Hello World!'
# 进行PKCS7填充
BS = AES.block_size
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
text = pad(text)
# 加密
cipher = AES.new(key.encode("utf8"), AES.MODE_ECB)
encrypted_text = cipher.encrypt(text.encode("utf8"))
# 将加密结果进行base64编码
encrypted_text = base64.b64encode(encrypted_text).decode("utf8")
print(encrypted_text)
```
首先,我们使用`Crypto`库中的`AES`模块和`base64`库进行加密和编码。然后,我们设置密钥和明文,并对明文进行PKCS7填充以保证明文长度是块长度的整数倍。接着,我们使用ECB模式创建一个AES对象,并对填充后的明文进行加密。最后,我们使用`base64`库对加密结果进行编码,并将结果打印出来。
需要注意的是,在ECB模式下,相同的明文块会被加密成相同的密文块,因此这种模式可能存在安全问题,因此通常建议使用更安全的CBC或CTR模式。
aes加密算法python实现
下面是一份简单的AES加密算法的Python实现代码:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
def encrypt_AES(key, data):
cipher = AES.new(key.encode('utf-8'), AES.MODE_ECB)
padded_data = pad(data.encode('utf-8'), AES.block_size)
encrypted_data = cipher.encrypt(padded_data)
return encrypted_data.hex()
```
其中,`key`是加密的密钥,`data`是要加密的数据。这个函数使用的是ECB模式,对于较长的数据,需要使用更安全的CBC模式。另外,解密的实现也是相似的,只需要将`encrypt`替换为`decrypt`即可。
阅读全文