Python AES_ECB_PKCS5加密代码
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 AES key = "****************"
mode = AES.MODE_ECB bs = 16
PADDING = 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()
Python AES_ECB_PKCS5加密代码的更多相关文章
- 使用python进行加密解密AES算法
使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...
- python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题
笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...
- python RSA加密、解密、签名
python RSA加密.解密.签名 python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是 ...
- Python实现加密的ZIP文件解压(密码已知)
博主在上篇博文介绍了<Python实现加密的RAR文件解压(密码已知)>后,又尝试了ZIP文件的解压方法,下面开始分享. 当ZIP文件的压缩密码已知时,可以通过调用zipfile库进行解压 ...
- 用python进行加密和解密——我看刑
加密和解密 密码术意味着更改消息的文本,以便不知道你秘密的人永远不会理解你的消息. 下面就来创建一个GUI应用程序,使用Python进行加密和解密. 在这里,我们需要编写使用无限循环的代码,代码将不断 ...
- 关于win2008r2上配置iis,出现加密代码与联邦基础加密冲突的问题的解决
在win2008r2上配置asp.net网站时,出现这个问题: This implementation is not part of the Windows Platform FIPS validat ...
- Python 坑爹之 代码缩进
建议:统一使用空格!!!!!!!!!不要Tab Python代码缩进 这两天python-cn邮件列表有一条thread发展的特别长,题目是<python的代码缩进真是坑爹>(地址), ...
- Python第一行代码
Python版本:Python 3.6.1 0x01 命令行交互 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计 ...
- python的PEP8 代码风格指南
PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...
随机推荐
- Xamarin Essentials教程屏幕状态DeviceDisplay
Xamarin Essentials教程屏幕状态DeviceDisplay 由于移动设备型号众多,采用的显示屏幕也千差万别.为了获取较好的显示效果,应用程序往往需要获取设备的显示状态,如屏幕参数. ...
- C++多态实现原理详解
C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数.如果对象类型是派生类,就调用派生类的函数:如果对象类型是基类 ...
- Good Bye 2018 (A~F, H)
目录 Codeforces 1091 A.New Year and the Christmas Ornament B.New Year and the Treasure Geolocation C.N ...
- JavaScript基础笔记(七)DOM
DOM DOM可以将任何HTML或者XML文档描述成一个由多层节点构成的结构. 一.节点层次 一)Node类型 DOM1定义了一个Node接口,该接口将由DOM中所有节点类型实现. 每一个节点都有一个 ...
- rest framework 源码流程
1. def dispatch(self, request, *args, **kwargs): """ `.dispatch()` is pretty much the ...
- NodeJS缓冲区
NodeJS缓冲区 JavaScript语言本身在I/O时只有字符串数据类型,没有二进制数据类型,但在处理流数据时,必须用到二进制数据,因此在Node中,定义了一个Buffer类作为存放二进制数据的缓 ...
- xml 初步学习 读取
引入xml文件 function loadXMLDoc(dname) { if (window.XMLHttpRequest) { xhttp = new ...
- 在Ubuntu1404的64bit版本下安装caffe
原创文章,未经允许不要转载 想安装很久了,一直到这时才开始安装,我是笔记本华硕FL5800L的,所以配置比较低.在win7 64位里面先装个vmware 12 pro,然后装了个Ubuntu140 ...
- HTML常用标签2
1 <!DOCTYPE>标签 声明位于文档最前面的位置,处于<html>标签之前.告知浏览器文档使用哪种规范 模式: 1. BackCompat:怪异模式,浏览器使用自己的怪异 ...
- .Net core下的配置设置(一)——Configuration
ASP.NET Core 中提供了一个Configuration 包,用以应用配置基于配置提供程序建立的键值对.这里以json文件配置的方式,简单的介绍一下它的用法. 首先定义一个配置文件appset ...