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服务器端收发请求的实现代码
Sep 29 Python
python计算对角线有理函数插值的方法
May 07 Python
详细解读Python中解析XML数据的方法
Oct 15 Python
python中range()与xrange()用法分析
Sep 21 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
python、java等哪一门编程语言适合人工智能?
Nov 13 Python
pandas 根据列的值选取所有行的示例
Nov 07 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
M1芯片安装python3.9.1的实现
Feb 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php 在线打包_支持子目录
2008/06/28 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
JQuery插件开发示例代码
2013/11/06 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
js自制图片放大镜功能
2017/01/24 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
python实现下载指定网址所有图片的方法
2015/08/08 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
高中生职业规划范文
2014/03/09 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
五一放假通知怎么写
2015/08/18 职场文书