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 json模块使用实例
Apr 11 Python
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
python中set常用操作汇总
Jun 30 Python
浅谈python字符串方法的简单使用
Jul 18 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
pycharm重命名文件的方法步骤
Jul 29 Python
Python 装饰器原理、定义与用法详解
Dec 07 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
Python面向对象特殊属性及方法解析
Sep 16 Python
python中spy++的使用超详细教程
Jan 29 Python
Python如何配置环境变量详解
May 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
wordpress之wp-settings.php
2007/08/17 PHP
php类中private属性继承问题分析
2012/11/01 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
php函数式编程简单示例
2019/08/08 PHP
javascript Array对象基础知识小结
2010/11/16 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
vue接口请求加密实例
2020/08/11 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python检测生僻字的实现方法
2016/10/23 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
python 常见的反爬虫策略
2020/09/27 Python
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
英语系毕业生求职信
2014/07/13 职场文书
新店开张活动方案
2014/08/24 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
工会文体活动总结
2015/05/07 职场文书
离婚律师函范本
2015/05/27 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
高中历史教学反思
2016/02/19 职场文书