本帖最后由 clown9s 于 2023-3-26 18:34 编辑
加密篇:python学习——AES加密
解密非封装版:
[Python] 纯文本查看 复制代码 """Remarks:crypto库的AES解密
"""
import base64
from encryption_2 import cryption # 之前已写好的加密函数
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad # unpad 去除填充
if __name__ == '__main__':
p_i_w = '012345678901234' # 明文
s_k = 'aaaabbbbcccc' # 密钥
c_msg, c_k = cryption(p_i_w, s_k) # 调用之前封装好的加密函数
mode_d = AES.new(c_k, AES.MODE_ECB)
# 初始化加密器后续用于解密 注意:加密时创建的加密器解密时不能用,需要重新初始化一个,但不需要修改模式
msg_d = mode_d.decrypt(base64.b64decode(c_msg)) # decrypt 解密
msg_d = unpad(msg_d, 16, 'pkcs7').decode('utf-8') # 去除填充
print('明文:', p_i_w)
print('密钥:', unpad(c_k, 16, 'pkcs7').decode('utf-8'))
print('解密:', msg_d)
封装版的解密,并调用之前写好的加密函数:
[Python] 纯文本查看 复制代码 import base64
from encryption_2 import cryption
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad, pad
def dec(d_d, d_k):
d_data = d_d.encode('utf-8')
d_key = d_k.encode('utf-8')
mode_d = AES.new(pad(d_key, 16, 'pkcs7'), AES.MODE_ECB)
msg_d = mode_d.decrypt(base64.b64decode(d_data))
msg_d = unpad(msg_d, 16, 'pkcs7').decode('utf-8')
return msg_d
if __name__ == '__main__':
p_i_w = input('请输入需加密的文本:')
s_k = input('请输入密钥:')
c_msg, k = cryption(p_i_w, s_k) # 这里返回了加密后的文本跟填充后的密钥,一般是不需要返回密钥的
print('加密后的文本:', c_msg)
a = input('请输入加密后的文本:')
b = input('请输入密钥:')
c = dec(a, b)
print('解密后的文本:', c)
|