Python3 hashlib模块和hmac 模块(加密)
hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512等常用算法
MD5加密算法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import hashlib """ MD5加密 """ hash_md5 = hashlib.md5() hash_md5.update(b "hello" ) #b 表示byte类型 hash_md5.update(b "world" ) print (hash_md5.hexdigest()) """ 十六进制MD5加密结果""" print (hash_md5.digest()) """ 二进制MD5加密结果 """ """ 分几次update的参数加密结果和拼接一起加密结果一样""" hashmd5 = hashlib.md5() hashmd5.update(b "helloworld" ) print (hashmd5.hexdigest()) print (hashmd5.digest()) |
运行结果:
1
2
3
4
|
fc5e038d38a57032085441e7fe7010b0 - - 十六进制 b '\xfc^\x03\x8d8\xa5p2\x08TA\xe7\xfep\x10\xb0' - - 二进制 fc5e038d38a57032085441e7fe7010b0 b '\xfc^\x03\x8d8\xa5p2\x08TA\xe7\xfep\x10\xb0' |
SHA加密算发,常用256的,位数越长越安全
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import hashlib print ( "hash1加密的二进制和十六进制结果" ) hash1 = hashlib.sha1() hash1.update(b "helloworld" ) print (hash1.digest()) print (hash1.hexdigest()) print ( "hash256加密的二进制和十六进制结果" ) hash256 = hashlib.sha256() hash256.update(b "helloworld" ) print (hash256.digest()) print (hash256.hexdigest()) print ( "hash384加密的二进制和十六进制结果" ) hash384 = hashlib.sha384() hash384.update(b "helloworld" ) print (hash384.digest()) print (hash384.hexdigest()) print ( "hash512加密的二进制和十六进制结果" ) hash512 = hashlib.sha512() hash512.update(b "helloworld" ) print (hash512.digest()) print (hash512.hexdigest()) |
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
|
hash1加密的二进制和十六进制结果 b 'j\xdf\xb1\x83\xa4\xa2\xc9J/\x92\xda\xb5\xad\xe7b\xa4x\x89\xa5\xa1' 6adfb183a4a2c94a2f92dab5ade762a47889a5a1 hash256加密的二进制和十六进制结果 b '\x93j\x18\\\xaa\xa2f\xbb\x9c\xbe\x98\x1e\x9e\x05\xcbx\xcds+\x0b2\x80\xeb\x94D\x12\xbbo\x8f\x8f\x07\xaf' 936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af hash384加密的二进制和十六进制结果 b "\x97\x98*[\x14\x14\xb9\x07\x81\x03\xa1\xc0\x08\xc4\xe3Rl'\xb4\x1c\xdb\xcf\x80y\x05`\xa4\x0f*\x9b\xf2\xedD'\xab\x14(x\x99\x15\xedK=\xc0|EK\xd9" 97982a5b1414b9078103a1c008c4e3526c27b41cdbcf80790560a40f2a9bf2ed4427ab1428789915ed4b3dc07c454bd9 hash512加密的二进制和十六进制结果 b '\x15\x94$MR\xf2\xd8\xc1+\x14+\xb6\x1fG\xbc.\xafP=m\x9c\xa8H\x0c\xae\x9f\xcf\x11/f\xe4\x96}\xc5\xe8\xfa\x98(^6\xdb\x8a\xf1\xb8\xff\xa8\xb8L\xb1^\x0f\xbc\xf86\xc3\xde\xb8\x03\xc1?7e\x9a`' 1594244d52f2d8c12b142bb61f47bc2eaf503d6d9ca8480cae9fcf112f66e4967dc5e8fa98285e36db8af1b8ffa8b84cb15e0fbcf836c3deb803c13f37659a60 |
中文的加密,需要编码encode()得到bytes类型,再进行加密操作
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import hashlib print ( "===MD5中文加密举例===" ) china_md5 = hashlib.md5() china_md5.update( "中华人民共和国" .encode(encoding = "utf-8" )) print (china_md5.digest()) print (china_md5.hexdigest()) print ( "===SHA中文加密举例===" ) china_sha = hashlib.sha256() china_sha.update( "中华人民共和国" .encode(encoding = "utf-8" )) print (china_sha.digest()) print (china_sha.hexdigest()) |
运行结果:
1
2
3
4
5
6
|
= = = MD5中文加密举例 = = = b '\x02_\xce\xab\x94\x18\xbe\x86\x06k`\xa7\x1b\xc7\x14\x85' 025fceab9418be86066b60a71bc71485 = = = SHA中文加密举例 = = = b '\xcak\x1e6\x84\xd5\xaa\xeec1\x90\xb1\x82\xce\xbb\x06\xd6%\xd2\x84\xfe\xc8\x9a\x95\x15 -v\xf4\xd6J?' ca6b1e3684d5aaee633190b182cebb06d625d284fec89a9515202d76f4d64a3f |
hmac 模块,它内部对我们创建 key 和 vlaue 再进行处理然后再加密
散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;
一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送把用key把消息加密,接收方用key + 消息明文再加密,拿加密后的值 跟 发送者的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了。
hmac加密示例
1
2
3
4
5
6
7
8
9
10
11
|
import hmac print ( "===hmac字符加密示例===" ) hm = hmac.new(b "hello" ,b "world" ) print ( "hmac二进制加密:" ,hm.digest()) print ( "hmac十六进制加密:" ,hm.hexdigest()) print ( "===hmac中文加密示例===" ) ch = hmac.new( "你好" .encode(encoding = "utf-8" ), "世界" .encode(encoding = "utf-8" )) print ( "hmac二进制加密:" ,ch.digest()) print ( "hmac十六进制加密:" ,ch.hexdigest()) |
运行结果:
1
2
3
4
5
6
|
= = = hmac字符加密示例 = = = hmac二进制加密: b '\x0e%d\xb7\xe1\x00\xf044\x1e\xa4w\xc2?(;' hmac十六进制加密: 0e2564b7e100f034341ea477c23f283b = = = hmac中文加密示例 = = = hmac二进制加密: b '\xb0\x90\xbdU\xda:\xe1\xef\xa9fts@\xbf%\n' hmac十六进制加密: b090bd55da3ae1efa966747340bf250a |
Python3 hashlib模块和hmac 模块(加密)的更多相关文章
- 模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块
目录 1. 包 2. time模块 1. 优先掌握 2. 了解 3. datetime模块 1. 优先掌握 4. random模块 1. 优先掌握 2. 了解 5. hashlib模块 ...
- 第十章、hashlib模块和hmac模块
目录 第十章.hashlib模块和hmac模块 一.hashlib模块 二.hash模块 第十章.hashlib模块和hmac模块 一.hashlib模块 hash是一种算法,接收传入的内容,经过运算 ...
- hashlib模块和hmac模块
hashlib模块和hmac模块 hashlib模块 一.导入方式 import hashlib 二.作用 无论你丢什么字符串,他都会返回一串 固定长度的字符串 三.模块功能 3.1 经常使用 imp ...
- Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
- Python标准库之hashlib模块与hmac模块
hashlib模块用于加密相关的操作.在Python 3.x里代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256.SHA384.SHA512 .MD5 算法.如果包含中文字符 ...
- SocketServer模块,hmac模块验证client合法性
hmac模块: 1.模块初识: import hmac # h = hmac.new() #括号里要给它连个bytes类型,一个是自定义的secret_key,一个是你想进行加密的bytes # 密文 ...
- python 加密 hashlib与hmac模块
https://www.jb51.net/article/128911.htm hashlib模块简介: hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 ...
- hashlib模块,hmac模块
6.11自我总结 1.hashlib模块(文件传输中将传输内容用指定算法进行处理) hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.S ...
- hmac模块和hashlib模块
hmac模块和hashlib模块 一.hash是什么 hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256. ...
随机推荐
- URL中编码问题
1.http协议传输统一iso-8859-1传输 jsp中用request.getparameter("keword");得到的是iso-8859-1翻译过来的,要用 keywor ...
- java得到当前时间
SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date ...
- scala中的模式匹配
基本语法 变量 match { case 值1 => 代码 case 值2 => 代码 ... case 值N if (...) => 代码 case _ => 代码 } 常量 ...
- 【bzoj2834】回家的路 分层图最短路
题目描述 输入 输出 样例输入 2 1 1 2 1 1 2 2 样例输出 5 题解 分层图最短路 dis[i][0]表示到i为横向时起点到i的最短路,dis[i][1]表示到i为纵向时起点到i的最短路 ...
- BZOJ1926:[SDOI2010]粟粟的书架——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1926 https://www.luogu.org/problemnew/show/P2468 幸福幼 ...
- HDU.2640 Queuing (矩阵快速幂)
HDU.2640 Queuing (矩阵快速幂) 题意分析 不妨令f为1,m为0,那么题目的意思为,求长度为n的01序列,求其中不含111或者101这样串的个数对M取模的值. 用F(n)表示串长为n的 ...
- Java中的字符串常量池?
参考:http://droidyue.com/blog/2014/12/21/string-literal-pool-in-java/index.html
- POJ 3281 最大流
Dining Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17251 Accepted: 7643 Descripti ...
- STM32串口发送第一个字符丢失解决之道
stm32用printf函数重定向到串口USART1发现第一个字符没打印出来具体如下: 刚开始修改fputc函数如下: int fputc(int ch,FILE *f){USART_SendData ...
- jq 由name获取那个radio选中了的
$("input[name='approve']:checked").val() //获取radio选中的值;var radio_checked_val = $("#fo ...