基于hashlib模块--加密(详解)


Posted in Python onJune 21, 2017

用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

import hashlib
 
m = hashlib.md5()
m.update(b"hello")
print(m.hexdigest())
m.update(b"It's me")
print(m.hexdigest())
m.update(b"It's been a long time since we spoken.")
print(m.hexdigest())
 
m2 = hashlib.md5()
m2.update(b"helloIt's me")
print(m2.hexdigest())
 
# 输出
5d41402abc4b2a76b9719d911017c592
64f69d95135bc13d4827f871b37f780f
0c9a83e10aa2f9e9629be61146db9cc2
64f69d95135bc13d4827f871b37f780f
 
#第二个和第四个 md5值是相同的,所以第二个加密的是 helloIt'sme<br><code class="python comments"><br></code>

print(m.digest()) #2进制格式hash

print(len(m.hexdigest())) #16进制格式hash

# ######## sha1 ########
 
hash = hashlib.sha1()
hash.update('admin')
print(hash.hexdigest())
 
# ######## sha256 ########
 
hash = hashlib.sha256()
hash.update('admin')
print(hash.hexdigest())
 
 
# ######## sha384 ########
 
hash = hashlib.sha384()
hash.update('admin')
print(hash.hexdigest())
 
# ######## sha512 ########
 
hash = hashlib.sha512()
hash.update('admin')
print(hash.hexdigest())

python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;

一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送把用key把消息加密,接收方用key + 消息明文再加密,拿加密后的值 跟 发送者的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了。

import hmac
 
h = hmac.new("天王盖地虎".encode(encoding="utf-8"), "你是小松鼠".encode(encoding="utf-8"))
print(h.digest())
print(h.hexdigest())
 
#输出
b'fx\xad\xdd\x9e\xd6\xddcQN\x82c\xcd\xd9\x80-'
6678addd9ed6dd63514e8263cdd9802d

以上这篇基于hashlib模块--加密(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的组合模式与责任链模式编程示例
Feb 02 Python
python魔法方法-属性转换和类的表示详解
Jul 22 Python
Python优先队列实现方法示例
Sep 21 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
Python中的函数式编程:不可变的数据结构
Oct 08 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
Python3字符串encode与decode的讲解
Apr 02 Python
python导入坐标点的具体操作
May 10 Python
python如果快速判断数字奇数偶数
Nov 13 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
Aug 17 Python
详谈Python基础之内置函数和递归
Jun 21 #Python
浅谈python内置变量-reversed(seq)
Jun 21 #Python
python 简单的绘图工具turtle使用详解
Jun 21 #Python
利用python批量给云主机配置安全组的方法教程
Jun 21 #Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 #Python
python将unicode转为str的方法
Jun 21 #Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 #Python
You might like
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
javascript 数组的方法集合
2008/06/05 Javascript
JS 对象介绍
2010/01/20 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python实现网络端口转发和重定向的方法
2016/09/19 Python
Python使用sorted排序的方法小结
2017/07/28 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
Python3简单实现串口通信的方法
2019/06/12 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
python 读取数据库并绘图的实例
2019/12/03 Python
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript