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

转载于:https://www.cnblogs.com/bert227/p/9328301.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值