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 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
python做接口测试的必要性
Nov 20 Python
python之列表推导式的用法
Nov 29 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
python模板入门教程之flask Jinja
Apr 11 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 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
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
node.js通过url读取文件
2020/10/16 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
致跳高运动员加油稿
2014/02/12 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
护校行动方案
2014/05/31 职场文书
师德师风的心得体会
2014/09/02 职场文书
2014年小学工作总结
2014/11/26 职场文书
优秀护士事迹材料
2014/12/25 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫