Python实现AES128
时间: 2023-11-05 18:15:19 浏览: 32
加密解密的代码怎么写?
下面是Python实现AES128加密解密的代码:
```python
# 导入Crypto库
from Crypto.Cipher import AES
# 初始化密钥、向量、明文
key = b'1234567890123456' # 密钥必须为16、24或32位的bytes字符串
iv = b'1234567890123456' # 向量必须为长度为16的bytes字符串
plaintext = b'this is a test.' # 明文必须为bytes字符串
# 创建AES对象
cipher = AES.new(key, AES.MODE_CBC, iv)
# 加密明文
ciphertext = cipher.encrypt(plaintext)
# 解密密文
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypt_text = cipher.decrypt(ciphertext)
# 打印加密后的密文和解密后的明文
print('加密后的密文:', ciphertext)
print('解密后的明文:', decrypt_text)
```
注意:使用AES算法加密解密时,如果明文或密文长度不足16的倍数,则需要在明文或密文末尾进行填充,常用的填充方式有PKCS7和ZeroPadding。此处未进行填充操作,请根据实际情况进行自行添加。
相关问题
aes128python实现
以下是使用Python实现AES-128加密和解密的示例代码:
```python
from Crypto.Cipher import AES
import base64
# 密钥(key)长度必须是16(AES-128)、24(AES-192)或32(AES-256)Bytes长度
key = '1234567890123456'.encode('utf-8')
iv = '1234567890123456'.encode('utf-8')
# 加密函数,如果text不足16位就用空格补足为16位,如果大于16但是不是16的倍数,就补足为16的倍数。
def encrypt(text):
cryptor = AES.new(key, AES.MODE_CBC, iv)
length = 16
count = len(text.encode('utf-8'))
if(count % length != 0):
add = length - (count % length)
else:
add = 0
text = text + ('\0' * add)
ciphertext = cryptor.encrypt(text.encode('utf-8'))
return base64.b64encode(ciphertext).decode('utf-8')
# 解密后,去掉补足的空格用strip() 去掉
def decrypt(text):
cryptor = AES.new(key, AES.MODE_CBC, iv)
plain_text = cryptor.decrypt(base64.b64decode(text)).decode('utf-8')
return plain_text.rstrip('\0')
if __name__ == '__main__':
# 测试加解密
e = encrypt("hello world")
print(e)
d = decrypt(e)
print(d)
```
需要注意的是,如果`text`不是16的倍数,就需要进行补齐,这里使用空格进行补齐,解密后再去掉补齐的空格。同时,加密后的密文需要进行base64编码,以便于传输和保存。
python实现AES
好的,关于Python实现AES,可以使用PyCryptodome库来实现。具体步骤如下:
1. 安装PyCryptodome库:可以使用pip install pycryptodome命令进行安装。
2. 导入Crypto.Cipher模块:使用from Crypto.Cipher import AES命令导入AES模块。
3. 创建AES对象:使用AES.new(key, mode, IV)命令创建AES对象,其中key为密钥,mode为加密模式(如CBC、ECB等),IV为初始化向量。
4. 加密/解密数据:使用encrypt()方法进行加密,使用decrypt()方法进行解密。
下面是一个简单的示例代码:
```python
from Crypto.Cipher import AES
# 加密函数
def encrypt_AES(key, data):
cipher = AES.new(key, AES.MODE_ECB)
return cipher.encrypt(data)
# 解密函数
def decrypt_AES(key, data):
cipher = AES.new(key, AES.MODE_ECB)
return cipher.decrypt(data)
# 测试
key = b'1234567890123456'
data = b'hello world'
encrypted_data = encrypt_AES(key, data)
decrypted_data = decrypt_AES(key, encrypted_data)
print(decrypted_data)
```