利用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 相关文章推荐
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
python装饰器与递归算法详解
Feb 18 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
flask框架中勾子函数的使用详解
Aug 01 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
解决django model修改添加字段报错的问题
Nov 18 Python
关于Django Models CharField 参数说明
Mar 31 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
Python Numpy之linspace用法说明
Apr 17 Python
如何将numpy二维数组中的np.nan值替换为指定的值
May 14 Python
简单介绍Python的第三方库yaml
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分页类的代码
2011/05/18 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
shiro授权的实现原理
2017/09/21 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python使用7z解压apk包的方法
2015/04/18 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
python中pyqtgraph知识点总结
2021/01/26 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
《广玉兰》教学反思
2014/04/14 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL