clown9s 发表于 2023-3-26 18:28

python学习——AES解密

本帖最后由 clown9s 于 2023-3-26 18:34 编辑

加密篇:python学习——AES加密

解密非封装版:
"""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)


封装版的解密,并调用之前写好的加密函数:
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)
页: [1]
查看完整版本: python学习——AES解密