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 模块(加密)的更多相关文章

  1. 模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块

    目录 1. 包 2. time模块   1. 优先掌握 2. 了解 3. datetime模块   1. 优先掌握 4. random模块   1. 优先掌握   2. 了解 5. hashlib模块 ...

  2. 第十章、hashlib模块和hmac模块

    目录 第十章.hashlib模块和hmac模块 一.hashlib模块 二.hash模块 第十章.hashlib模块和hmac模块 一.hashlib模块 hash是一种算法,接收传入的内容,经过运算 ...

  3. hashlib模块和hmac模块

    hashlib模块和hmac模块 hashlib模块 一.导入方式 import hashlib 二.作用 无论你丢什么字符串,他都会返回一串 固定长度的字符串 三.模块功能 3.1 经常使用 imp ...

  4. Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)

    本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...

  5. Python标准库之hashlib模块与hmac模块

    hashlib模块用于加密相关的操作.在Python 3.x里代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256.SHA384.SHA512 .MD5 算法.如果包含中文字符 ...

  6. SocketServer模块,hmac模块验证client合法性

    hmac模块: 1.模块初识: import hmac # h = hmac.new() #括号里要给它连个bytes类型,一个是自定义的secret_key,一个是你想进行加密的bytes # 密文 ...

  7. python 加密 hashlib与hmac模块

    https://www.jb51.net/article/128911.htm hashlib模块简介: hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 ...

  8. hashlib模块,hmac模块

    6.11自我总结 1.hashlib模块(文件传输中将传输内容用指定算法进行处理) hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.S ...

  9. hmac模块和hashlib模块

    hmac模块和hashlib模块 一.hash是什么 ​ hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256. ...

随机推荐

  1. 生活中的goto

    if(你是个傻逼?){ out.println("继续你的傻逼生活吧!"); }else(你不是傻逼?){ out.println("你说不是都不是啊,继续你的傻逼生活吧 ...

  2. 创建 cordova 项目

    1. 安装 node.js 2.安装 cordova : npm install -g cordova 3.创建 安卓项目: cordova create <项目路径>  <包名&g ...

  3. git & configs

    git & configs https://alvinalexander.com/git/git-show-change-username-email-address https://stac ...

  4. 使用 ECS 实例创建 FTP 站点 linux

    本文只做记载过程和问题,并不详细 官方教程走一遍 https://help.aliyun.com/document_detail/51998.html#h2-linux-ftp-2 值得注意的是步骤二 ...

  5. 【Windows】Windows服务管家婆之Service Control Manager

    Service Control Manager,服务控制管理器,人称SCM就是它!在Windows内核中,都可以看到她忙碌的身影,可以说是系统服务和驱动的管家婆了!     SCM管家婆起早贪黑,每次 ...

  6. Qt Pro文件与Qt模块启用

    看qt论坛中经常有人忘记 QT+=network 等语句.随便写写吧,或许对他人有帮助. 一.从哪开始呢 不妨先看个例子吧: #include <QtCore/QCoreApplication& ...

  7. BZOJ 1834 网络扩容(最大流+费用流)

    对于第一问,直接求最大流. 对于第二问,建源点s和汇点t,s连1容量为INF,费用为0的边,n连t容量为最大流+k,费用为0的边.这样就把最大流限制为最多增加k了. 限制需要求扩充的最小费用,原图的边 ...

  8. Oracle数据库中心双活之道:ASM vs VPLEX

    Oracle数据库中心双活之道:ASM vs VPLEX 来源 https://www.cnblogs.com/wenjiewang/p/7460212.html 双活方案对比:ASM vs V-PL ...

  9. 转:狄利克雷过程(dirichlet process )的五种理解

    狄利克雷过程(dirichlet process )的五种理解  原文:http://blog.csdn.net/xianlingmao/article/details/7342837   无参数贝叶 ...

  10. POJ 2728 Desert King | 01分数规划

    题目: http://poj.org/problem?id=2728 题解: 二分比率,然后每条边边权变成w-mid*dis,用prim跑最小生成树就行 #include<cstdio> ...