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. ASP.Net MVC+Ibaties架构

    1.配置Ibaties首先在DLL引用中添加Ibaties相关引用:IBatisNet.Common.dll;IBatisNet.Common.Logging.Log4Net.dll;IBatisNe ...

  2. table中的td限制宽度width也不能让字符过长变成省略号生效?

    table中的td限制宽度width也不能让字符过长变成省略号生效? http://blog.csdn.net/java_mr_zheng/article/details/49423247 CSS t ...

  3. SpringBoot使用servletAPI与异常处理

    工程结构: 主方法类: package com.boot.servlet.api.bootservlet; import org.springframework.boot.SpringApplicat ...

  4. BZOJ 1149 风铃(树形DP)

    题目描述的实际是一颗二叉树,对于每个结点,要么满叉,要么无叉. 对于一种无解的简单情况,我们搜一遍树找到最浅的叶子结点1和最深的叶子结点2,如果dep[1]<dep[2]-1,则显然无解. 所以 ...

  5. windows 架设SVN服务器

    想完整走一遍svn布置及使用流程,试完整理了一下: step 1:下载安装 1.安装SVN服务器,到http://subversion.apache.org/packages.html 上下载wind ...

  6. 浅析Nim游戏(洛谷P2197)

    首先我们看例题:P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔 ...

  7. 用select模拟一个socket server成型版2

    1.字典队列测试 import queue msg_dic={} msg_dic[1]=queue.Queue() msg_dic[1].put('hello') msg_dic[1].put('bo ...

  8. (转)超详细单机版搭建hadoop环境图文解析

                        超详细单机版搭建hadoop环境图文解析   安装过程: 一.安装Linux操作系统 二.在Ubuntu下创建hadoop用户组和用户 三.在Ubuntu下安装 ...

  9. hihoCoder#1698 : 假期计划 组合数

    题面:hihoCoder#1698 : 假期计划  组合数 题解: 题目要求是有序的排列,因此我们可以在一开始就乘上A!*B!然后在把这个序列划分成很多段. 这样的话由于乘了阶乘,所以所有排列我们都已 ...

  10. 对于iOS性能优化的一点看法

    在我们通常的开发工作中,每次需求定下来的时候,开发时间都是很紧张的,于是我们就抓紧时间开发,完成需求.在匆忙开发的过程中,或多或少的会有一些性能问题存在,在开发任务完成以后,我们都要进行性能优化.现将 ...