Python中摘要算法MD5,SHA1简介及应用实例代码


Posted in Python onJanuary 09, 2018

关于算法的学习,小编觉得编程语言中的算法大都有一些相通的地方,主要的方面一是了解这一算法能用来干什么,另一方面,学习它在这类编程语言中怎么实现。

摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过(不同的data计算出来的摘要不同)。

常见的摘要算法有MD5和SHA1

MD5

import hashlib
m=hashlib.md5()
m.update('zhangkang')
print(m.hexdigest())
输出:
09b32682a49db34d3c9d7e6d97f85a4a

如果数据太长,可以多次调用update(),结果是一样的

import hashlib
m=hashlib.md5()
m.update('zhang')
m.update('kang') #输出结果一样
print(m.hexdigest())

输出:
09b32682a49db34d3c9d7e6d97f85a4a

假如我们改变原始数据中的一个字母看看计算的MD5值是否完全不同

import hashlib
m=hashlib.md5()
m.update('zhangkanf')#输出结果完全不一样,虽然只改变一个字母
print(m.hexdigest())

输出:
17d2bcf39906311768c2f363778d2801

MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

SHA1

import hashlib
s=hashlib.sha1()
s.update('my name is zhangkang')
print(s.hexdigest())

输出:
512e877d47cd06246b24ac99027991cbfa67aec1

和MD5类似,同样支持分块多次update(),只是输出结果有些区别。SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。

摘要算法应用

假如我们有一个网站,数据库中保存着用户名和密码等信息,假设数据库中的用户密码都是明文,那么一旦数据库泄露,那么所有用户的密码就会显而易见。这样有可能导致用户的信息泄露,而正确保存用户密码的方式是不保存明文密码,而是保存密码的MD5值。当用户登录的时候,先计算密码的MD5值,然后再和数据库中的比较。有人可能会问,如果密码的MD5值泄露了呢?这个没关系,因为计算数据的MD5值很方便,但是由MD5值反推原始数据基本不可能。为了更加安全的保护用户的密码信息,在计算密码的MD5值的时候,建议连同用户名,密码,或者其他固定字符串都一并update(),也就是俗称的”加盐”。

#模拟用户登录
import hashlib
db={
'zhangkang':'25c25c67943e82a116ec8c32218a5068',
}
#明文密码是:zhangkang123456
def login(username,password):
  m=hashlib.md5()
  m.update(username+password+'the-salt')
  passwd=m.hexdigest()
  if passwd!=db[username]:
    return False
  else:return True
while(True):
  username=raw_input('Input username:')
  password=raw_input('Input password:')
  if(login(username,password)):
    print('login success!')
    break
  else:
    print('login failed!')

总结

以上就是本文关于Python中摘要算法MD5,SHA1简介及应用实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
Python使用minidom读写xml的方法
Jun 03 Python
Python设置默认编码为utf8的方法
Jul 01 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
如何用itertools解决无序排列组合的问题
May 18 Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
Python装饰器的应用场景代码总结
Apr 10 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
深入了解Python中pop和remove的使用方法
Jan 09 #Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 #Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 #Python
详解python使用Nginx和uWSGI来运行Python应用
Jan 09 #Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 #Python
运动检测ViBe算法python实现代码
Jan 09 #Python
python+opencv实现动态物体识别
Jan 09 #Python
You might like
又一个php 分页类实现代码
2009/12/03 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
php与paypal整合方法
2010/11/28 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
深入理解angular2启动项目步骤
2017/07/15 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
Python 从列表中取值和取索引的方法
2018/12/25 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
vue路由实现登录拦截
2021/03/24 Vue.js
师范应届生求职信
2013/11/15 职场文书
出国考察邀请函
2014/01/21 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
《火烧云》教学反思
2014/04/12 职场文书
学校安全责任书
2014/04/14 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
影视后期实训报告
2014/11/05 职场文书
先进集体事迹材料范文
2014/12/25 职场文书