利用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字典几种方法总结(推荐)
Sep 11 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
Django REST framework 分页的实现代码
Jun 19 Python
Python转换时间的图文方法
Jul 01 Python
Python实现的企业粉丝抽奖功能示例
Jul 26 Python
python配置文件写入过程详解
Oct 19 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
Python运行DLL文件的方法
Jan 17 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
python删除文件、清空目录的实现方法
Sep 23 Python
用Python创建简易网站图文教程
Jun 11 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python实现配置文件备份的方法
2015/07/30 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
tensorflow之并行读入数据详解
2020/02/05 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
机械电子工程专业推荐信范文
2013/11/20 职场文书
中专三年学习的个人自我评价
2013/12/12 职场文书
营销人才自我鉴定范文
2013/12/25 职场文书
2014年生产部工作总结
2014/12/17 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL
React如何创建组件
2021/06/27 Javascript
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers