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 相关文章推荐
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
TensorFlow Session会话控制&Variable变量详解
Jul 30 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
python实现移位加密和解密
Mar 22 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
Python中的xlrd模块使用原理解析
May 21 Python
Tensorflow tf.tile()的用法实例分析
May 22 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
pymysql模块使用简介与示例
Nov 17 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+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
jquery图片上下tab切换效果
2011/03/18 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
Python中实现的RC4算法
2015/02/14 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
详解django中使用定时任务的方法
2018/09/27 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
详解python tkinter模块安装过程
2020/01/06 Python
Python常用编译器原理及特点解析
2020/03/23 Python
PyTorch中的C++扩展实现
2020/04/02 Python
CSS3伪类选择器:nth-child()
2009/04/02 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
J2EE相关知识面试题
2013/08/26 面试题
硕士研究生自我鉴定
2013/11/08 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers