基于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简单获取本机计算机名和IP地址的方法
Jun 03 Python
python实现文本文件合并
Dec 29 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
python 实现登录网页的操作方法
May 11 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
windows下python安装pip方法详解
Feb 10 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 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一些有意思的小区别
2006/12/06 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
php遍历目录方法小结
2015/03/10 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
PHP微信红包API接口
2015/12/05 PHP
phalcon框架使用指南
2016/02/23 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
python生成器generator用法实例分析
2015/06/04 Python
深入理解python函数递归和生成器
2016/06/06 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
财政局长自荐信范文
2013/12/22 职场文书
高中生物教学反思
2014/02/05 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
初三化学教学反思
2016/02/22 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python