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 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
Dec 05 Python
python 实现UTC时间加减的方法
Dec 31 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
pycharm重命名文件的方法步骤
Jul 29 Python
如何利用python给图片添加半透明水印
Sep 06 Python
python修改文件内容的3种方法详解
Nov 15 Python
python实现一个猜拳游戏
Apr 05 Python
Python实现天气查询软件
Jun 07 Python
Django中celery的使用项目实例
Jul 07 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
GD输出汉字的函数的分析
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
php三元运算符知识汇总
2015/07/02 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
EasyUI中的tree用法介绍
2011/11/01 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
python类继承用法实例分析
2014/10/10 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
Python实现的knn算法示例
2018/06/14 Python
Python编写打字训练小程序
2019/09/26 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
水果花束:Fruit Bouquets
2017/12/20 全球购物
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
软件设计的目标是什么
2016/12/04 面试题
成人教育自我鉴定
2013/11/01 职场文书
中专毕业生自荐信范文
2013/11/28 职场文书
奠基仪式主持词
2014/03/20 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
《静夜思》教学反思
2016/02/17 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
Java移除无效括号的方法实现
2021/08/07 Java/Android
PyTorch中的torch.cat简单介绍
2022/03/17 Python