基于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 SQLite3数据库操作类分享
Jun 10 Python
Python的设计模式编程入门指南
Apr 02 Python
深入浅析Python字符编码
Nov 12 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
Python列表切片常用操作实例解析
Mar 10 Python
Python如何转换字符串大小写
Jun 04 Python
Django项目创建及管理实现流程详解
Oct 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代码把全角数字转为半角数字
2007/12/10 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
php格式化时间戳
2016/12/17 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
JS的参数传递示例介绍
2014/02/08 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
VUE重点问题总结
2018/03/19 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
2020/11/16 Javascript
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
Django开发中复选框用法示例
2018/03/20 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
Python自带的IDE在哪里
2020/07/01 Python
C#面试问题
2016/07/29 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
专科文秘应届生求职信
2013/11/18 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
李敖北大演讲稿
2014/05/24 职场文书
企业委托书范本
2014/09/13 职场文书
面试通知短信
2015/04/20 职场文书