利用pycrypto包进行AES、DES、MD5等加密

原文: http://www.cnblogs.com/darkpig/p/5676076.html

第三方Crypto包提供了较全面的加密算法,包括Cipher、Hash、Protocol、PublicKey、Singature、Util几个子模块,其中Cipher模块中有常用的AES、DES加密算法,Hash模块中有MD5、MD4、SHA等算法。下面介绍AES及DES的加密解密算法,python版本为2.7.9。

5.1 AES加密解密

 1 # coding=utf-8
2
3 from Crypto.Cipher import AES
4 from Crypto import Random
5 import binascii
6
7 key = '1234567890!@#$%^' #秘钥,必须是16、24或32字节长度
8 iv = Random.new().read(16) #随机向量,必须是16字节长度
9
10 cipher1 = AES.new(key,AES.MODE_CFB,iv) #密文生成器,MODE_CFB为加密模式
11
12 encrypt_msg = iv + cipher1.encrypt('我是明文') #附加上iv值是为了在解密时找到在加密时用到的随机iv
13 print '加密后的值为:',binascii.b2a_hex(encrypt_msg) #将二进制密文转换为16机制显示
14
15
16 cipher2 = AES.new(key,AES.MODE_CFB,iv) #解密时必须重新创建新的密文生成器
17 decrypt_msg = cipher2.decrypt(encrypt_msg[16:]) #后十六位是真正的密文
18 print '解密后的值为:',decrypt_msg.decode('utf-8')

运行后的结果为:

1 >>> ================================ RESTART ================================
2 >>>
3 加密后的值为: 502d279e1cba9ef6744ad4ce5a12dbf9389c99731bfab1349e35b528
4 解密后的值为: 我是明文

5.2 DES3加密解密

 1 # coding=utf-8
2
3 from Crypto.Cipher import DES3
4 from Crypto import Random
5 import binascii
6
7 key = '1234567890!@#$%^'
8 iv = Random.new().read(8) #iv值必须是8位
9 cipher1 = DES3.new(key,DES3.MODE_OFB,iv) #密文生成器,采用MODE_OFB加密模式
10 encrypt_msg = iv + cipher1.encrypt('我是明文必须是八')
11 #附加上iv值是为了在解密时找到在加密时用到的随机iv,加密的密文必须是八字节的整数倍,最后部分
12 #不足八字节的,需要补位
13 print '加密后的值为:',binascii.b2a_hex(encrypt_msg) #将二进制密文转换为16进制显示
14
15
16 cipher2 = DES3.new(key,DES3.MODE_OFB,iv) #解密时必须重新创建新的密文生成器
17 decrypt_msg = cipher2.decrypt(encrypt_msg[8:]) #后八位是真正的密文
18 print '解密后的值为:',decrypt_msg

运行后的结果为:

1 >>> ================================ RESTART ================================
2 >>>
3 加密后的值为: 8caf464c66ec652e5305d33ff4814a3a4f8423b404ae6a48f4a1c411ecddf932
4 解密后的值为: 我是明文必须是八

python加密包的更多相关文章

  1. Python加密与解密

    前言 据记载,公元前400年,古希腊人发明了置换密码.1881年世界上的第一个电话 保密专利出现.在第二次世界大战期间,德国军方启用“恩尼格玛”密码机, 密码学在战争中起着非常重要的作用. 随着信息化 ...

  2. python库包大全(转)

    python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...

  3. Python3安装Crypto加密包

    Python3安装Crypto加密包 下载链接 加密包地址 步骤 下载加密包,解压加密包到Python安装目录下Lib\site-packages目录中,尝试在Pycharm中导入 from Cryp ...

  4. 机器学习常用Python扩展包

    在Ubuntu下安装Python模块通常有3种方法:1)使用apt-get:2)使用pip命令(推荐);3)easy_instal 可安装方法参考:[转]linux和windows下安装python集 ...

  5. Python的包管理工具Pip (zz )

    Python的包管理工具Pip 接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_ins ...

  6. 简易安装python统计包

    PythonCharm简易安装python统计包及 本文介绍使用pythonCharm IDE 来安装Python统计包或一些packages的简单过程,基本无任何技术难度,顺便提一提笔者在安装过程中 ...

  7. 安装python 的 包 paramiko

    安装python 的 包 paramiko 安装 依赖 yum -y install gcc python-devel 获取安装 pycryptowget https://pypi.python.or ...

  8. python的包和模块

    python 的包即文件夹,但是必须包含_init_.py 模块就是xx.py

  9. Python的包管理

    0.Python的包管理 在刚开始学习Python的时候比较头疼各种包的管理,后来搜到一些Python的包管理工具,比如setuptools, easy_install, pip, distribut ...

随机推荐

  1. Problem P: 素数求和

    #include<stdio.h> int main() { ; scanf("%d",&n); n>=&&n<=; ;i<= ...

  2. MFC出现 error RC2108: expected numerical dialog constant错误解决办法

    MFC在使用picture console控件之后往往会弹出这个错误:error RC2108: expected numerical dialog constant. 此时,双击这个错误,会跳到提示 ...

  3. SSH 登录缓慢解决方案

    SSH 登录太慢可能是 DNS 解析的问题,默认配置下 sshd 初次接受 ssh 客户端连接的时候会自动反向解析客户端 IP 以得到 ssh 客户端的域名或主机名. 如果这个时候 DNS 的反向解析 ...

  4. python-sdk-demo的打包

    1.安装setuptools pip install python-setuptools 2.创建一个简单的包 下载demo https://github.com/cp-m/py-sdk-demo.g ...

  5. Linux下PCI设备驱动程序开发 --- PCI驱动程序实现(三)

    三.PCI驱动程序实现 1. 关键数据结构 PCI设备上有三种地址空间:PCI的I/O空间.PCI的存储空间和PCI的配置空间.CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给 ...

  6. nagios系列教程地址

    http://www.sosidc.com/sort/10/page/3 http://www.sosidc.com/sort/10/page/2 http://www.sosidc.com/sort ...

  7. display:table合并表格

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. struts2,action上传文件

    通过servlet实现文件上传,可以用用servlet接受到request的值的话:主要是这句话 List<?> items = upload.parseRequest(request); ...

  9. C# SendMail 发送邮件

    最近因为用的发送邮件的地方,就查询了资料,总结以下几个方法 1.利用新浪邮箱发送 2.利用公司邮箱发送 3.利用CDO发送,这种方式要引用Interop.ADODB.dll(http://www.no ...

  10. Git服务器分类

    目录(?)[-] 服务器上的 Git 协议 本地协议 优点 缺点 SSH 协议 优点 缺点 Git 协议 优点 缺点 HTTPS 协议 优点 缺点 在服务器部署 Git 将纯目录转移到服务器 小型安装 ...