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中操作字符串之replace()方法的使用
May 19 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
python正则表达式面试题解答
Apr 28 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 Python
Python字符串内置函数功能与用法总结
Apr 16 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
jupyter lab文件导出/下载方式
Apr 22 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
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
PHP7新增函数
2021/03/09 PHP
js 事件小结 表格区别
2007/08/13 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
react路由配置方式详解
2017/08/07 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
什么是反射?如何实现反射?
2016/07/25 面试题
业务副厂长岗位职责
2014/01/03 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
《所见》教学反思
2016/02/23 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
python实现过滤敏感词
2021/05/08 Python
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电