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的类方法和静态方法
Dec 13 Python
Python中使用dom模块生成XML文件示例
Apr 05 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
python 连接sqlite及简单操作
Jun 30 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
python二进制文件的转译详解
Jul 03 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
python通过opencv实现图片裁剪原理解析
Jan 19 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 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
web方式ftp
2006/10/09 PHP
js下函数般调用正则的方法附代码
2008/06/22 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
python中abs&map&reduce简介
2018/02/20 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python 用下标截取字符串的实例
2018/12/25 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
python绘制动态曲线教程
2020/02/24 Python
Keras 使用 Lambda层详解
2020/06/10 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
局域网标准
2016/09/10 面试题
师德师风演讲稿
2014/05/05 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
怎么写工作检讨书
2014/11/16 职场文书
2016年元旦致辞
2015/08/01 职场文书
HttpClient实现表单提交上传文件
2022/08/14 Java/Android