利用Python如何生成hash值示例详解


Posted in Python onDecember 20, 2017

一、介绍

如果在Python中需要对用户输入的密码或者其他内容进行加密,首选的方法是生成hash值。

在Python中可以利用二个模块来进行:

      - crypt

      - hashlib

二、crypt

(一)crypt的主要方法和常量

名称 描述
md5(…) 利用md5算法加密
sha1(…) 利用sha1算法加密
sha224(…) 利用sha224算法加密
sha256(…) 利用sha256算法加密
sha384(…) 利用sha384算法加密
sha512(…) 利用sha512算法加密

(二)使用说明与示例

使用crypt.crypt(…)进行hash加密的时候,需要提供二个参数:

     - 加密内容

     - salt

如果不特别指定salt,系统就会调用crypt.mksalt(…)生成一个salt

如果想要以特定的加密算法生成salt就应该使用下面的命令:

>>>salt = crypt.mksalt(crypt.METHOD_SHA512)
>>> salt
'$6$s8Q3eNP6urKZb3AK'

然后再进行数据加密:

>>> hash = crypt.crypt("helloworld",salt)
>>> hash
'$6$s8Q3eNP6urKZb3AK$L0O5cqHRU.1f170bV2KrjF3LkLL54So442TqUIsk.wYtCtOSD4Tyt./fj6W6Y.EzrbNm00grA4yPPhXGya2ie1'

三、hashlib

(一)hashlib的主要方法和常量

名称 描述
md5(…) 利用md5算法加密
sha1(…) 利用sha1算法加密
sha224(…) 利用sha224算法加密
sha256(…) 利用sha256算法加密
sha384(…) 利用sha384算法加密
sha512(…) 利用sha512算法加密

**(二)Hash对象特有的方法

如果你利用 hashlib 生成了一个Hash对象,那么这个Hash对象会包含如下方法:

名称 描述
update(arg) 可以重复利用指定了特殊加密算法的Hash对象,对 arg 进行加密
digest(…) 以字符形式返回加密内容
hexdigest(…) 以16进制形式返回加密内容
copy(…) 为了达到重复利用Hash对象的目的,而克隆Hash对象

(三)示例

1、直接使用hashlib方法

>>> hashlib.sha224("Nobody inspects the spammish repetition")
<sha224 HASH object @ 0x7f99432c5b28>
>>> hashlib.sha224("Nobody inspects the spammish repetition").hexdigest()
'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'

2、直接使用Hash对象中的方法

>>> m = hashlib.md5()
>>> m
<md5 HASH object @ 0x7f99432c5468>
>>> m.update("Nobody inspects")
>>> m.digest()
'>\xf7)\xcc\xf0\xccV\x07\x9c\xa5F\xd5\x80\x83\xdc\x12'
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
>>> m.hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'

我是如何 Python 一句话校验软件哈希值的

MD5

python -c "import hashlib,sys;print hashlib.md5(open(sys.argv[1],'rb').read()).hexdigest()" Shadowsocks.exe

校验 下载软件是否被“中间人动过手脚”

例如:校验shadowsocks

SHA-1

python -c "import hashlib,sys;print hashlib.sha1(open(sys.argv[1],'rb').read()).hexdigest()" Shadowsocks.exe

SHA-256

python -c "import hashlib,sys;print hashlib.sha256(open(sys.argv[1],'rb').read()).hexdigest()" Shadowsocks.exe

SHA-512

python -c "import hashlib,sys;print hashlib.sha512(open(sys.argv[1],'rb').read()).hexdigest()" Shadowsocks.exe

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python实现Windows上气泡提醒效果的方法
Jun 03 Python
Django中对通过测试的用户进行限制访问的方法
Jul 23 Python
python中list列表的高级函数
May 17 Python
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
Django实现基于类的分页功能
Oct 31 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 #Python
python实现神经网络感知器算法
Dec 20 #Python
Python代码实现KNN算法
Dec 20 #Python
详解appium+python 启动一个app步骤
Dec 20 #Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 #Python
Python实现感知机(PLA)算法
Dec 20 #Python
详解Python nose单元测试框架的安装与使用
Dec 20 #Python
You might like
php代码把全角数字转为半角数字
2007/12/10 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
js实现验证码功能
2020/07/24 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
token 机制和实现方式
2020/12/15 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
python单例模式实例分析
2015/04/08 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
python 性能优化方法小结
2017/03/31 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
Django密码系统实现过程详解
2019/07/19 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
管理失职检讨书
2014/02/12 职场文书
党支部综合考察材料
2014/05/19 职场文书
卖房协议书样本
2014/10/30 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
企业承诺书格式范文
2015/04/28 职场文书
联谊会开场白
2015/06/01 职场文书
三下乡活动心得体会
2016/01/23 职场文书