Python基于pycrypto实现的AES加密和解密算法示例


Posted in Python onApril 10, 2018

本文实例讲述了Python基于pycrypto实现的AES加密和解密算法。分享给大家供大家参考,具体如下:

一 代码

# -*- coding: UTF-8 -*-
import string
import random
from Crypto.Cipher import AES
def keyGenerater(length):
  '''''生成指定长度的秘钥'''
  if length not in (16, 24, 32):
    return None
  x = string.ascii_letters+string.digits
  return ''.join([random.choice(x) for i in range(length)])
def encryptor_decryptor(key, mode):
  return AES.new(key, mode, b'0000000000000000')
#使用指定密钥和模式对给定信息进行加密
def AESencrypt(key, mode, text):
  encryptor = encryptor_decryptor(key, mode)
  return encryptor.encrypt(text)
#使用指定密钥和模式对给定信息进行解密
def AESdecrypt(key, mode, text):
  decryptor = encryptor_decryptor(key, mode)
  return decryptor.decrypt(text)
if __name__ == '__main__':
  text = 'Python3.5 is excellent.'
  key = keyGenerater(16)
  #随机选择AES的模式
  mode = random.choice((AES.MODE_CBC, AES.MODE_CFB, AES.MODE_ECB, AES.MODE_OFB))
  if not key:
    print('Something is wrong.')
  else:
    print('key:', key)
    print('mode:', mode)
    print('Before encryption:', text)
    #明文必须以字节串形式,且长度为16的倍数
    text_encoded = text.encode()
    text_length = len(text_encoded)
    padding_length = 16 - text_length%16
    text_encoded = text_encoded + b'0'*padding_length
    text_encrypted = AESencrypt(key, mode, text_encoded)
    print('After encryption:', text_encrypted)
    text_decrypted =AESdecrypt(key, mode, text_encrypted)
    print('After decryption:', text_decrypted.decode()[:-padding_length])

二 运行结果

E:\python\python可以这样学\第18章 密码学编程\code>python AES_test.py
('key:', 'D5pcO6iu0HIbj3I2')
('mode:', 1)
('Before encryption:', 'Python3.5 is excellent.')
('After encryption:', '\xf4\x15\x9f\xaf\xea\xd0\n\x03\xfdf\xf6}9\xaa\xa34\xb4\x1eL2\x0e \x16\xa5 \xff?\x8bA\x8e\xdd\xa8')
('After decryption:', u'Python3.5 is excellent.')

Python 相关文章推荐
Python yield 小结和实例
Apr 25 Python
Python常见数据结构详解
Jul 24 Python
Python对列表排序的方法实例分析
May 16 Python
使用python实现rsa算法代码
Feb 17 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Python中使用支持向量机SVM实践
Dec 27 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
Python闭包和装饰器用法实例详解
May 22 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
利用python绘制正态分布曲线
Jan 04 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 #Python
对pandas中apply函数的用法详解
Apr 10 #Python
Python 25行代码实现的RSA算法详解
Apr 10 #Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 #Python
Python基于socket模块实现UDP通信功能示例
Apr 10 #Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 #Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 #Python
You might like
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
Laravel5中contracts详解
2015/03/02 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
.NET面试10题
2014/02/24 面试题
优秀学生干部先进事迹材料
2014/05/26 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
工程部岗位职责范本
2015/04/11 职场文书
新学期家长寄语2016
2015/12/03 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
2019各种保证书范文
2019/06/24 职场文书