利用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 相关文章推荐
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
整理Python 常用string函数(收藏)
May 30 Python
Python的语言类型(详解)
Jun 24 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
Python 错误和异常代码详解
Jan 29 Python
python线程中同步锁详解
Apr 27 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
Python3常用内置方法代码实例
Nov 18 Python
Win10里python3创建虚拟环境的步骤
Jan 31 Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 Python
python re.match()用法相关示例
Jan 27 Python
Python用tkinter实现自定义记事本的方法详解
Mar 31 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伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
php不用正则验证真假身份证
2013/11/06 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
js获取当前select 元素值的代码
2010/04/19 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
小学班级管理心得体会
2016/01/07 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang