利用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 将字符串转换成字典dict
Mar 24 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
Python中偏函数用法示例
Jun 07 Python
Python对切片命名的实现方法
Oct 16 Python
Python坐标线性插值应用实现
Nov 13 Python
Python实现数值积分方式
Nov 20 Python
Django自定义列表 models字段显示方式
Apr 03 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
python通过函数名调用函数的几种方法总结
Jun 07 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 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 mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
浅析Python多线程下的变量问题
2015/04/28 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
PyQt5实现简单的计算器
2020/05/30 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
shell变量的作用空间是什么
2013/08/17 面试题
师范应届生语文教师求职信
2013/10/29 职场文书
工程业务员岗位职责
2013/12/31 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
北京奥运会口号
2014/06/21 职场文书
同学毕业留言寄语
2015/02/27 职场文书
九九重阳节致辞
2015/07/31 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android