Python md5与sha1加密算法用法分析


Posted in Python onJuly 14, 2017

本文实例讲述了Python md5与sha1加密算法。分享给大家供大家参考,具体如下:

MD5

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。

特性:

首先,它不可逆,没有系统的方法可以知道MD5码原来的文字是什么

其次,这个码具有高度的离散性,没有规律可循。哪怕原信息的一点点变化就会导致MD5的巨大变化,也可以说产生的MD5 码是不可预测的。

最后,由于这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。

用途:

一般认为MD5码可以唯一地代表原信息的特征,通常用于密码的加密存储,数字签名,文件完整性验证等

SHA1

SHA1的全称是Secure Hash Algorithm(安全哈希算法) ,是由NIST NSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。

SHA-1比MD5多32位密文,所以更安全。由于同样的原因,MD5比SHA-1的运算速度更快。

用法实例:

Python中的hashlib模块是个专门提供hash算法的库,现在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。用法如下:

import hashlib
hash_new = hashlib.sha1() #或hashlib.md5()
with open('driver.xml.tar.bz2','rb') as fp: #打开文件,一定要以二进制打开
  while True:
    data = fp.read() #读取文件块
    if not data: #直到读完文件
      break
    hash_new.update(data)
hash_value = hash_new.hexdigest() #生成40位(sha1)或32位(md5)的十六进制字符串
print hash_value
Python 相关文章推荐
python使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
详解Python中for循环的使用方法
May 14 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
Jun 15 Python
numpy排序与集合运算用法示例
Dec 15 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
Python将8位的图片转为24位的图片实现方法
Oct 24 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
python防止随意修改类属性的实现方法
Aug 21 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
Python自动化开发学习之三级菜单制作
Jul 14 #Python
python实现杨辉三角思路
Jul 14 #Python
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 #Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 #Python
Python加密方法小结【md5,base64,sha1】
Jul 13 #Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 #Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
Jul 13 #Python
You might like
德劲1103的维修打理经验
2021/03/02 无线电
php简单封装了一些常用JS操作
2007/02/25 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
JS中的多态实例详解
2017/10/15 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
wxPython框架类和面板类的使用实例
2014/09/28 Python
Django中信号signals的简单使用方法
2019/07/04 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
教师自我鉴定
2013/12/13 职场文书
奥运会口号
2014/06/13 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
关于颐和园的导游词
2015/01/30 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书