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中threading模块的几个常用方法
Jun 18 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
神经网络理论基础及Python实现详解
Dec 15 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
浅析python 定时拆分备份 nginx 日志的方法
Apr 27 Python
导致python中import错误的原因是什么
Jul 01 Python
django 将自带的数据库sqlite3改成mysql实例
Jul 09 Python
Python开发五子棋小游戏
May 02 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技巧与注意事项分析
2011/02/03 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
Python中优化NumPy包使用性能的教程
2015/04/23 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
Python OS模块常用函数说明
2015/05/23 Python
解决Python传递中文参数的问题
2015/08/04 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
python实现图像拼接功能
2020/03/23 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
2014年残联工作总结
2014/11/21 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
秋收起义观后感
2015/06/11 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python