基于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 相关文章推荐
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
Python使用PDFMiner解析PDF代码实例
Mar 27 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
python实现网页自动签到功能
Jan 21 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
使用pandas读取文件的实现
Jul 31 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
基于TensorFlow常量、序列以及随机值生成实例
Jan 04 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
详解python日志输出使用配置文件格式
Feb 10 Python
一起来学习Python的元组和列表
Mar 13 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导入模块文件分享
2015/03/17 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
php中Ioc(控制反转)和Di(依赖注入)
2017/05/07 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
RequireJs的使用详解
2017/02/19 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
python实现自动登录后台管理系统
2018/10/18 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
python批量下载抖音视频
2019/06/17 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
西北政法大学自主招生自荐信
2014/01/29 职场文书
小学语文教研活动总结
2014/07/01 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
新生开学寄语大全
2015/05/28 职场文书
初中运动会前导词
2015/07/20 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书