基于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解析网页源代码中的115网盘链接实例
Sep 30 Python
python中requests模块的使用方法
Apr 08 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
Python实现包含min函数的栈
Apr 29 Python
基于Python的接口测试框架实例
Nov 04 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
Python实现冒泡排序算法的完整实例
Nov 04 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
readonly和disabled属性的区别
2015/07/26 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python实现曲线点抽稀算法的示例
2017/10/12 Python
python @property的用法及含义全面解析
2018/02/01 Python
Django添加feeds功能的示例
2018/08/07 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
anaconda如何查看并管理python环境
2019/07/05 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
集团薪酬管理制度
2014/01/13 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
原材料检验岗位职责
2014/03/15 职场文书
公司股权转让协议书
2014/04/12 职场文书
禁毒主题班会教案
2015/08/14 职场文书
保险公司增员口号
2015/12/25 职场文书
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS