利用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在windows下实现备份程序实例
Jul 04 Python
Python实现单词拼写检查
Apr 25 Python
Python构建网页爬虫原理分析
Dec 19 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
PyCharm2018 安装及破解方法实现步骤
Sep 09 Python
Python csv文件的读写操作实例详解
Nov 19 Python
python 爬取小说并下载的示例
Dec 07 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 Python
Python pygame实现中国象棋单机版源码
Jun 20 Python
基于Python实现将列表数据生成折线图
Mar 23 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 Rename 更改文件、文件夹名称
2011/05/24 PHP
php合并js请求的例子
2013/11/01 PHP
php验证session无效的解决方法
2014/11/04 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
Vue计算属性的使用
2017/08/04 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
python实现的各种排序算法代码
2013/03/04 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
详解Python流程控制语句
2020/10/28 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
高二化学教学反思
2014/01/30 职场文书
计算机专业自荐信
2014/05/24 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
运动会开幕词
2015/01/28 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python