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中__str__和__repr__方法的区别
Apr 17 Python
python比较两个列表是否相等的方法
Jul 28 Python
python字符串连接方法分析
Apr 12 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
python Tkinter版学生管理系统
Feb 20 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
python+mysql实现个人论文管理系统
Oct 25 Python
Python模块_PyLibTiff读取tif文件的实例
Jan 13 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
Django Form常用功能及代码示例
Oct 13 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
PHP+DBM的同学录程序(4)
2006/10/09 PHP
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
vue.js的提示组件
2017/03/02 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
浅谈python多线程和队列管理shell程序
2015/08/04 Python
python程序封装为win32服务的方法
2021/03/07 Python
python调用摄像头拍摄数据集
2019/06/01 Python
Python3分析处理声音数据的例子
2019/08/27 Python
python命令 -u参数用法解析
2019/10/24 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
C++面试题目
2013/06/25 面试题
一份创业计划书范文
2014/02/08 职场文书
中式婚礼主持词
2014/03/13 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书