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实现爬虫下载美女图片
Jul 14 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
python之django母板页面的使用
Jul 03 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
pandas.cut具体使用总结
Jun 24 Python
pytorch+lstm实现的pos示例
Jan 14 Python
python实现拼图小游戏
Feb 22 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
Python图像读写方法对比
Nov 16 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 Python
Pandas数据结构之Series的使用
Mar 31 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连接MySQL数据库三种实现方法
2020/12/10 PHP
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
Python常用列表数据结构小结
2014/08/06 Python
Python3 Random模块代码详解
2017/12/04 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
python pandas时序处理相关功能详解
2019/07/03 Python
python修改字典键(key)的方法
2019/08/05 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
机电一体化专业应届生求职信
2013/11/27 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
放飞理想主题班会
2015/08/14 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
浅谈Python协程asyncio
2021/06/20 Python
实现GO语言对数组切片去重
2022/04/20 Golang