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 相关文章推荐
基于python的七种经典排序算法(推荐)
Dec 08 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
Python 查看文件的编码格式方法
Dec 21 Python
python如何实现内容写在图片上
Mar 23 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
超简单使用Python换脸实例
Mar 27 Python
python各类经纬度转换的实例代码
Aug 08 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
python实现翻译word表格小程序
Feb 27 Python
python des,aes,rsa加解密的实现
Jan 16 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 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页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
Javascript实现字数统计
2015/07/03 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python实现快速多线程ping的方法
2015/07/15 Python
Python制作Windows系统服务
2017/03/25 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
如何清空python的变量
2020/07/05 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
校园广播稿500字
2014/02/04 职场文书
教师节商场活动方案
2014/02/13 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书