利用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发送各类邮件的主要方法
Dec 22 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
python 实现兔子生兔子示例
Nov 21 Python
Python绘图实现显示中文
Dec 04 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 Python
如何利用python读取micaps文件详解
Oct 18 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
Python中time标准库的使用教程
Apr 13 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
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
JS简单表单验证功能完整示例
2020/01/26 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
python妹子图简单爬虫实例
2015/07/07 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
党员创先争优公开承诺书
2014/03/28 职场文书
小班评语大全
2014/05/04 职场文书
捐书活动总结
2014/05/04 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
长城导游词300字
2015/01/30 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
庆七一活动简报
2015/07/20 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
MySQL开启事务的方式
2021/06/26 MySQL
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫