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基础入门之seed()方法的使用
May 15 Python
Python网络编程 Python套接字编程
Sep 13 Python
pandas值替换方法
Jul 10 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
python 函数中的内置函数及用法详解
Jul 02 Python
详解python播放音频的三种方法
Sep 23 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
python如何删除列为空的行
Jul 17 Python
Python的scikit-image模块实例讲解
Dec 30 Python
一文搞懂python异常处理、模块与包
Jun 26 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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读取数据库信息的几种方法
2008/05/24 PHP
php修改时间格式的代码
2011/05/29 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
jQuery live
2009/05/15 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
了解重排与重绘
2019/05/29 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
[01:46]新英雄登场
2019/09/10 DOTA
复制粘贴功能的Python程序
2008/04/04 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
python 重定向获取真实url的方法
2018/05/11 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
洗发露广告词
2014/03/14 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
积极向上的团队口号
2014/06/06 职场文书
人代会标语
2014/06/30 职场文书
健康状况证明模板
2014/10/23 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript