利用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 相关文章推荐
在Linux中通过Python脚本访问mdb数据库的方法
May 06 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
基于python的Tkinter编写登陆注册界面
Jun 30 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 Python
FFrpc python客户端lib使用解析
Aug 24 Python
Django--权限Permissions的例子
Aug 28 Python
Python之变量类型和if判断方式
May 05 Python
python中导入 train_test_split提示错误的解决
Jun 19 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
python 指定源路径来解决import问题的操作
Mar 04 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之apc
2013/05/15 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
深入理解js promise chain
2016/05/05 Javascript
js简单时间比较的方法
2016/08/02 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
快速了解python leveldb
2018/01/18 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
中国旅游网站:途牛旅游网
2019/09/29 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
亲子读书活动方案
2014/02/22 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
医院党员公开承诺书
2014/08/30 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
员工家属慰问信
2015/03/24 职场文书
工作时间证明
2015/06/15 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
队列队形口号
2015/12/25 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js