利用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的几条建议分享
Feb 10 Python
跟老齐学Python之编写类之三子类
Oct 11 Python
python实现web方式logview的方法
Aug 10 Python
python基本语法练习实例
Sep 19 Python
python学习教程之使用py2exe打包
Sep 24 Python
Python常见工厂函数用法示例
Mar 21 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
python3中numpy函数tile的用法详解
Dec 04 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
Python常用模块函数代码汇总解析
Aug 31 Python
Python面向对象特殊属性及方法解析
Sep 16 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
写一个用户在线显示的程序
2006/10/09 PHP
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
python如何为创建大量实例节省内存
2018/03/20 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Python中的Numpy矩阵操作
2018/08/12 Python
python实现狄克斯特拉算法
2019/01/17 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
python 写一个性能测试工具(一)
2020/10/24 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
中间件分为哪几类
2012/03/14 面试题
中专毕业生自我鉴定
2014/02/02 职场文书
西式婚礼主持词
2014/03/13 职场文书
学校督导评估方案
2014/06/10 职场文书
初中教师个人总结
2015/02/10 职场文书
个人自荐书范文
2015/03/09 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript