利用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 自动安装 Rising 杀毒软件
Apr 24 Python
python去掉字符串中重复字符的方法
Feb 27 Python
python文件操作整理汇总
Oct 21 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
简单谈谈Python中的闭包
Nov 30 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 Python
如何用python处理excel表格
Jun 09 Python
Keras - GPU ID 和显存占用设定步骤
Jun 22 Python
python中的错误如何查看
Jul 08 Python
python中pickle模块浅析
Dec 29 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 cookie 登录验证示例代码
2009/03/16 PHP
php生成短网址示例
2014/05/05 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
JS判定是否原生方法
2013/07/22 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
详解python基础之while循环及if判断
2017/08/24 Python
python在文本开头插入一行的实例
2018/05/02 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
python中列表的含义及用法
2020/05/26 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
大学毕业生通用自荐信范文
2013/10/31 职场文书
大学生先进事迹材料
2014/02/16 职场文书
总经理岗位职责
2015/02/04 职场文书
西湖英语导游词
2015/02/06 职场文书
电子商务专业求职信范文
2015/03/19 职场文书