目录
一、python 代码实现如下:
#AES_ECB模式实现
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes # 自动生成密钥
from Crypto.Util.Padding import pad, unpad
# pad 填充, unpad 解填充
from base64 import b64encode, b64decode
# pad 缺几个字符就填充几个字符
key = get_random_bytes(16)
def encrypt_ecb(data):
# 随机生成密钥
aes = AES.new(key, AES.MODE_ECB) # (密钥, 加密模式)
res = aes.encrypt(pad(data, 16))
return res
def decrypt_ecb(data):
aes = AES.new(key, AES.MODE_ECB) # (密钥, 解密模式)
res = aes.decrypt(b64decode(data))
# 如果不进行解填充,后面就会有奇怪的字符
return unpad(res, 16).decode()
if __name__ == '__main__':
print(b64encode(key))
encrypt_data = b64encode(encrypt_ecb('Hello World!'.encode())).decode() # Data must be aligned to block boundary in ECB mode (块大小不足ECB模式)
print(encrypt_data)
decrypt_data = decrypt_ecb(encrypt_data)
print(decrypt_data)
二、代码解析
1、先对“Hello World!”字节数据进行AES_ECB模式加密;
2、再对加密后的数据密文进行解密,看能否得到“HelloWorld!”