博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python AES_ECB_PKCS5加密代码
阅读量:4685 次
发布时间:2019-06-09

本文共 2265 字,大约阅读时间需要 7 分钟。

https://blog.csdn.net/u010978840/article/details/79035463

***************************************************************

#!/usr/bin/env python # coding=utf-8 # Created by slowchen on 2018/1/10 13:48. import base64 import re from Crypto.Cipher import AES class AESECB:     def __init__(self, key):         self.key = key         self.mode = AES.MODE_ECB         self.bs = 16 # block size         self.PADDING = lambda s: s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)     def encrypt(self, text):         generator = AES.new(self.key, self.mode) # ECB模式无需向量iv         crypt = generator.encrypt(self.PADDING(text))         crypted_str = base64.b64encode(crypt)         result = crypted_str.decode()         return result     def decrypt(self, text):         generator = AES.new(self.key, self.mode) # ECB模式无需向量iv         text += (len(text) % 4) * '='         decrpyt_bytes = base64.b64decode(text)         meg = generator.decrypt(decrpyt_bytes) # 去除解码后的非法字符         try:             result = re.compile('[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f\n\r\t]').sub('', meg.decode())         except Exception:             result = '解码失败,请重试!'             return result             if __name__ == '__main__':     aes = AESECB('this is aes key!')     print(aes.encrypt('pythonaes123456'))     print(aes.decrypt('bvN4eERKQBOSXu5EpZ+rBw=='))     print(aes.decrypt('yzm34N/bEY8kVJNeS93Gv1svJI77YPjaK1+mW+/A4FY=')) # python is very good

改善的代码

from Crypto.Cipher import AESkey = "****************"mode = AES.MODE_ECBbs = 16PADDING = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) % bs)PADDING = lambda s: s + (bs - len(s.encode()) % bs) * chr(bs - len(s.encode()) % bs)def un_padding(padded_text):    padded_len = ord(padded_text[-1])    if padded_len >= 16:        return padded_text    if len(set(padded_text[-padded_len:])) > 1:        return padded_text    return padded_text[0:-padded_len]        text = "欢迎来到abc"generator = AES.new(key, mode)crypt = generator.encrypt(PADDING(text))crypt_hex_string = crypt.hex()crypted_text = "ec017a24e572d282eb8abbda44376cee"generator = AES.new(key, mode)#meg = generator.decrypt(crypt)meg = generator.decrypt(bytes.fromhex(crypted_text))decrypted_text =  meg.decode()

 

转载于:https://www.cnblogs.com/zhao1949/p/10450725.html

你可能感兴趣的文章
使用点符号代替溢出的文本
查看>>
Axios 中文说明
查看>>
fatal: remote origin already exists.
查看>>
gridview 自定义value值
查看>>
2018二月实现计划成果及其三月规划
查看>>
封装springmvc处理ajax请求结果
查看>>
tyvj P2018 「Nescafé26」小猫爬山 解题报告
查看>>
类名.class和getClass()区别
查看>>
开发脚本自动部署及监控
查看>>
JavaScript--语句
查看>>
12/17面试题
查看>>
css 继承和层叠
查看>>
javascript实现图片轮播3D效果
查看>>
ssl初一组周六模拟赛【2018.3.17】
查看>>
[RxJS] Avoid mulit post requests by using shareReplay()
查看>>
C++和C#之间的数据类型对应关系
查看>>
模型分离(选做)
查看>>
LeetCode 242. Valid Anagram
查看>>
观察者模式------《Head First 设计模式》
查看>>
JSP表单提交乱码
查看>>