AES是一种对称加密算法。它涉及四个计算步骤,分别是替换字节、行移位、列混排和轮密钥加密。整个加密过程中会不断迭代重复上述四个步骤。解密过程就是上述加密步骤的逆运算。
这里采用pycryptodome库来进行AES加密
from Crypto.Cipher import AES
from Crypto import Random
#补齐16字节,必须是16的倍数
def fill_text(msg):
to_add = 0
if len(msg) % 16 != 0:
to_add = 16 - len(msg) % 16
return msg + b'\0'*to_add
#AES的key必须是16、24、32位长度
key = b'12345678'
iv = Random.new().read(AES.block_size)
cipher = AES.new(fill_text(key), AES.MODE_ECB)
plaintext = '红红火火恍恍惚惚'
print('原文:', plaintext)
msg = cipher.encrypt(fill_text(plaintext.encode()))
print('加密后的字节码:', msg)
text = cipher.decrypt(msg)
print('解密后的文本:', text.decode())
执行结果
原文: 红红火火恍恍惚惚
加密后的字节码: b'\xe0,-&\x0e\xc0w\xf4\x16\xd3\n\xab\x9d\x156x.NK\x8c\xa8\xb9\xa7~\xa8%y+\xa1\t@\xee'
解密后的文本: 红红火火恍恍惚惚