利用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 相关文章推荐
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python批量修改文本文件内容的方法
Apr 29 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
快速了解Python相对导入
Jan 12 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
Python类及获取对象属性方法解析
Jun 15 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
PyCharm+Miniconda3安装配置教程详解
Feb 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
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python使用tkinter实现简单计算器
2018/01/30 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
一道SQL面试题
2012/12/31 面试题
十岁生日父母答谢词
2014/01/18 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
机关节能减排实施方案
2014/03/17 职场文书
董事长助理工作职责
2014/06/08 职场文书
2015年组织部工作总结
2015/04/03 职场文书