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. Python基础教程系列目录,最全的Python入门系列教程!

    Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 在现在的工作及开发当中,Python的使用越来越广泛,为了方便大家的学习,Linux大学 特推出了 <Python基 ...

  2. Go语言【第十篇】:Go数据结构之:指针

    Go语言指针 Go语言中指针是很容易学习的,Go语言中使用指针可以更简单的执行一些任务.我们都知道变量是一种使用方便的占位符,用于引用计算机内存地址.Go语言的取地址符是 &,放到一个变量前使 ...

  3. CentOS yum安装软件包

    yum(Yellowdog Update Modifie)命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定 ...

  4. Spring-Boot基于配置按条件装Bean

    背景 同一个接口有多种实现,项目启动时按某种规则来选择性的启用其中一种实现,再具体一点,比如Controller初始化的时候,根据配置文件的指定的实现类前缀,来记载具体Service,不同Servic ...

  5. JavaScript中的valueOf与toString方法

    基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题. JavaScript 的 valueOf() 方法 valu ...

  6. ACE_Message_Block功能简介

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/30/607960.html ACE_Message_Block在Ace中用来表示消息的存放空间 ...

  7. springboot集成junit测试与javamail测试遇到的问题

    1.springboot如何集成junit测试? 导入junit的jar包 使用下面注解: @RunWith()关于这个的解释看下这两篇文章: http://www.imooc.com/qadetai ...

  8. HDU 3605 最大流+状态压缩

    Escape Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  9. hive executeTask被interrupt处理

    异常信息如下: java.io.IOException: Failed on local exception: java.nio.channels.ClosedByInterruptException ...

  10. Tomcat设置开启时自动访问某个servlet类存在的问题

    <servlet> <servlet-name>****</servlet-name> <servlet-class>****</servlet- ...