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 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
Python列表推导式与生成器表达式用法示例
Feb 08 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
Python设计模式之原型模式实例详解
Jan 18 Python
python实现简单加密解密机制
Mar 19 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
Python os库常用操作代码汇总
Nov 03 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 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文本数据库的搜索方法
2006/10/09 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
js获取视频时长代码
2014/04/10 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
pandas每次多Sheet写入文件的方法
2018/12/10 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
深入浅析python的第三方库pandas
2020/02/13 Python
python画环形图的方法
2020/03/25 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
机械制造与自动化应届生求职信
2013/11/16 职场文书
军校本科大学生自我评价
2014/01/14 职场文书
物理学专业求职信
2014/07/04 职场文书
单位活动策划方案
2014/08/17 职场文书
仙境之桥观后感
2015/06/16 职场文书
小学运动会宣传稿
2015/07/23 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技