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使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
python数组过滤实现方法
Jul 27 Python
python基于phantomjs实现导入图片
May 13 Python
Python实现excel转sqlite的方法
Jul 17 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
对Django外键关系的描述
Jul 26 Python
在Tensorflow中查看权重的实现
Jan 24 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
Python接口自动化测试框架运行原理及流程
Nov 30 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
php连接mysql数据库代码
2009/03/10 PHP
php防攻击代码升级版
2010/12/29 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP循环结构实例讲解
2014/02/10 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
Javascript倒计时代码
2010/08/12 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
Python 错误和异常小结
2013/10/09 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
python中异常捕获方法详解
2017/03/03 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
大学生职业生涯规划书模板
2014/01/18 职场文书
关于学习的演讲稿
2014/05/10 职场文书
中职生求职信
2014/07/01 职场文书
2016新年晚会开场白
2015/12/03 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang