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中expandtabs()方法的使用
May 18 Python
python字符串连接方法分析
Apr 12 Python
利用Python开发实现简单的记事本
Nov 15 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
python PyTorch预训练示例
Feb 11 Python
python中logging包的使用总结
Feb 28 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
python实现微信小程序自动回复
Sep 10 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
Python any()函数的使用方法
Oct 28 Python
pytorch实现线性回归以及多元回归
Apr 11 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
用JAVASCRIPT如何给<textarea></textarea>赋值
2007/04/20 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
JS高级运动实例分析
2016/12/20 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
Python实现AI换脸功能
2020/04/10 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
如何用python处理excel表格
2020/06/09 Python
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
幼儿园元旦家长感言
2014/02/27 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫