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 解析html之BeautifulSoup
Jul 07 Python
python实现博客文章爬虫示例
Feb 26 Python
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
Django框架多表查询实例分析
Jul 04 Python
python支付宝支付示例详解
Aug 22 Python
面向对象学习之pygame坦克大战
Sep 11 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 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
mysql 搜索之简单应用
2007/04/27 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
python批量制作雷达图的实现方法
2016/07/26 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
python tkinter界面居中显示的方法
2018/10/11 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
python计算n的阶乘的方法代码
2019/10/25 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
C语言笔试集
2012/07/24 面试题
上课睡觉检讨书
2014/01/28 职场文书
总经理司机职责
2014/02/02 职场文书
小学生寒假家长评语
2014/04/16 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
物流专业自荐信
2014/05/23 职场文书
旷工检讨书1000字
2015/01/01 职场文书
酒会邀请函
2015/01/31 职场文书
《比的意义》教学反思
2016/02/18 职场文书