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加密代码的更多相关文章

  1. 使用python进行加密解密AES算法

    使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...

  2. python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题

    笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...

  3. python RSA加密、解密、签名

    python RSA加密.解密.签名 python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是 ...

  4. Python实现加密的ZIP文件解压(密码已知)

    博主在上篇博文介绍了<Python实现加密的RAR文件解压(密码已知)>后,又尝试了ZIP文件的解压方法,下面开始分享. 当ZIP文件的压缩密码已知时,可以通过调用zipfile库进行解压 ...

  5. 用python进行加密和解密——我看刑

    加密和解密 密码术意味着更改消息的文本,以便不知道你秘密的人永远不会理解你的消息. 下面就来创建一个GUI应用程序,使用Python进行加密和解密. 在这里,我们需要编写使用无限循环的代码,代码将不断 ...

  6. 关于win2008r2上配置iis,出现加密代码与联邦基础加密冲突的问题的解决

    在win2008r2上配置asp.net网站时,出现这个问题: This implementation is not part of the Windows Platform FIPS validat ...

  7. Python 坑爹之 代码缩进

    建议:统一使用空格!!!!!!!!!不要Tab Python代码缩进   这两天python-cn邮件列表有一条thread发展的特别长,题目是<python的代码缩进真是坑爹>(地址), ...

  8. Python第一行代码

    Python版本:Python 3.6.1 0x01 命令行交互 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计 ...

  9. python的PEP8 代码风格指南

    PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...

随机推荐

  1. 自己总结的C#编码规范--1.命名约定篇

    命名约定 我们在命名标识符时(包括参数,常量,变量),应使用单词的首字母大小写来区分一个标识符中的多个单词,如UserName. PascalCasing PascalCasing包含一到多个单词,每 ...

  2. BZOJ.5288.[AHOI/HNOI2018]游戏(思路 拓扑)

    BZOJ LOJ 洛谷 考虑如何预处理每个点能到的区间\([l,r]\). 对于\(i,i+1\)的一扇门,如果钥匙在\(i\)的右边,连边\(i\to i+1\),表示从\(i\)出发到不了\(i+ ...

  3. 2017-9-8-李明Linux:Linux应用与发展

    1965年,MIT.通用电气&贝尔实验室联合开发分时操作系统Multics,没有项目管理概念和追求目标过于庞大导致项目失败:1969年,参加过该项目的贝尔实验室成员肯 ·汤普森对自己开发的游戏 ...

  4. Java并发编程(二)-- 创建、运行线程

    Java线程 Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类. Java可以用如下方式创建一个线程: Tread thread = new Thread ...

  5. vue给methods中的方法传入当前点击行的值

    <template> <!-- 在template中,只能存在一个根组件 --> <div class="event"> <ul> ...

  6. 生成树的计数 Matrix-Tree(矩阵树)定理

    信息学竞赛中,有关生成树的最优化问题如最小生成树等是我们经常遇到的,而对生成树的计数及其相关问题则少有涉及.事实上,生成树的计数是十分有意义的,在许多方面都有着广泛的应用.本文从一道信息学竞赛中出现的 ...

  7. Flask实例化配置

    template_folder :指定模板存放路径,默认值:temolates from flask import Flask, url_for app = Flask(__name__,templa ...

  8. day1-接口测试_jmeter_postman

    1.postman测试接口六种类型,(注意1.每个请求最好使用独立的dome) 1.1 请求获取学生信息接口,请求方式为get,路径:/api/x/x,唯一参数stu_name=XXX;直接在输入地址 ...

  9. mysql 设置、更改、找回密码

    1,新装mysql,添加密码 mysqladmin -u root password NEWPASSWORD 2,记得旧密码,改密码 mysqladmin -u root -p'OLDPASSWORD ...

  10. 阿里云服务器安装postgresql

    https://blog.csdn.net/wlwlwlwl015/article/details/52399739 安装oracle http://www.cnblogs.com/vesaa/p/9 ...