Python使用PyCrypto实现AES加密功能示例


Posted in Python onMay 22, 2017

本文实例讲述了Python使用PyCrypto实现AES加密功能。分享给大家供大家参考,具体如下:

#!/usr/bin/env python
from Crypto.Cipher import AES
import base64
import os
# the block size for the cipher object; must be 16, 24, or 32 for AES
BLOCK_SIZE = 32
# the character used for padding--with a block cipher such as AES, the value
# you encrypt must be a multiple of BLOCK_SIZE in length. This character is
# used to ensure that your value is always a multiple of BLOCK_SIZE
PADDING = '{'
# one-liner to sufficiently pad the text to be encrypted
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
# one-liners to encrypt/encode and decrypt/decode a string
# encrypt with AES, encode with base64
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)
# generate a random secret key
secret = os.urandom(BLOCK_SIZE)
# create a cipher object using the random secret
cipher = AES.new(secret)
# encode a string
encoded = EncodeAES(cipher, 'password')
print 'Encrypted string:', encoded
# decode the encoded string
decoded = DecodeAES(cipher, encoded)
print 'Decrypted string:', decoded
Python 相关文章推荐
python用ConfigObj读写配置文件的实现代码
Mar 04 Python
python操作gmail实例
Jan 14 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
python获取指定时间差的时间实例详解
Apr 11 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
pandas.DataFrame 根据条件新建列并赋值的方法
Apr 08 Python
Python实现语音识别和语音合成功能
Sep 20 Python
python实现小世界网络生成
Nov 21 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
Jupyter安装链接aconda实现过程图解
Nov 02 Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 Python
django+js+ajax实现刷新页面的方法
May 22 #Python
Python正则表达式经典入门教程
May 22 #Python
Python AES加密模块用法分析
May 22 #Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 #Python
对Python进行数据分析_关于Package的安装问题
May 22 #Python
详解python之配置日志的几种方式
May 22 #Python
多版本Python共存的配置方法
May 22 #Python
You might like
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
jQuery 使用手册(七)
2009/09/23 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
python中import reload __import__的区别详解
2017/10/16 Python
Python3 replace()函数使用方法
2018/03/19 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
python中的句柄操作的方法示例
2019/06/20 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
如何用Python徒手写线性回归
2021/01/25 Python
编辑求职信样本
2013/12/16 职场文书
小学新学期教师寄语
2014/01/18 职场文书
土地租赁意向书
2014/07/30 职场文书
煤矿安全协议书
2014/08/20 职场文书
2014年招商工作总结
2014/11/22 职场文书
如何写观后感
2015/06/19 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
python的变量和简单数字类型详解
2021/09/15 Python