首页 > 代码库 > hashlib模块

hashlib模块

简述

用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

1、hashlib.md5()加密

 

1 import hashlib
2 d = hashlib.md5()
3 d.update(b"weng")
4 print(d.hexdigest())
5 #输出  1895e0e72493a2bd17f2559364bbf518
6 
7 d.update(b"xiaoqing")
8 print(d.hexdigest())
9 #2句合起来输出  fa12dea42c6f01df6f3ede48b739d083

 

2、sha...()系列

已经被淘汰

#********************sha256*******************

import hashlib
d = hashlib.sha1()
d.update(b"weng")
print(d.hexdigest())
#输出
# c460d45b9ce464aaf9b705baea3d5e353aa1c8fb

d.update(b"xiaoqing")
print(d.hexdigest())
#2句合起来输出
# c98ab444d0c3a6109e70d2287bdaf65cffbe1e34

#********************sha256*******************
import hashlib
d = hashlib.sha256()
d.update(b"weng")
print(d.hexdigest())
#输出
# af5df0db1afe88190f9215bb66b8eefab08a95f2a2b52b7c5b0e01a526843cdf

d.update(b"xiaoqing")
print(d.hexdigest())
#2句合起来输出
# 296e089ed765bc2017992859f8e3991c81ec5ce53b8dfdf2212cdd0fc6809341

#********************sha256*******************
import hashlib
d = hashlib.sha224()
d.update(b"weng")
print(d.hexdigest())
#输出
# 82924a97a28e2393bd03f1fb0cabbb37a75df4b6ea4186abc4f4acf4

d.update(b"xiaoqing")
print(d.hexdigest())
#2句合起来输出
# cf303311d4f2ce6824a852828f1715ce639834341d4080d2e90d5621

#********************sha256*******************
import hashlib
d = hashlib.sha384()
d.update(b"weng")
print(d.hexdigest())
#输出
# d4aa05ec162859f66141c4b8ff348161a94358911b673719300d212dbe3fcbe0f7ceb74543b9c8b64e726c0e279899a8

d.update(b"xiaoqing")
print(d.hexdigest())
#2句合起来输出
# e30d4698ce244a739e579efb4e4a8f4be07afb84c5d8b5137394d9863c9d55960afe3e8cdb8a8f4c7db89c37f0b00f49

#********************sha256*******************

import hashlib
d = hashlib.sha512()
d.update(b"weng")
print(d.hexdigest())
#输出
# 044218baa100b5051cbfbe1dfbc09463223d3ab4fee581698c2ae0738c0344f63e7c51c0331aeef4d735da4f3b31ab16bfab66e78c6f775384077c0d1268fb62

d.update(b"xiaoqing")
print(d.hexdigest())
#2句合起来输出
# c1f5e2690eb59f9a3f5e8793c1ba48871af36b587c855379a89e3777a6cdce4ee98796284d8875fbd850378b2600f8bf173861f6841909357a789ea1e1421d22

ps:

  1. 以上这几种,其实都是对MD5加密的不同算法
  2. 其中sha256用的最多,比MD5要安全的多
  3. 有些公司会用加盐方式加密,比如:把字符串"zhangqigao",通过一定的算法变成"zhang.qi.gao",当然这种算法自己肯定要知道,然后MD5加密,当然每个公司的加盐方式是不一样的。

3、hmac

还不够吊?python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;

一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送把用key把消息加密,接收方用key + 消息明文再加密,拿加密后的值 跟 发送者的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了。

 

1 import hmac
2 d = hmac.new("".encode(encoding = "utf-8"))
3 print(d.hexdigest()) #按16进制加密输出
4 print(d.digest())   #按10进制加密输出
5 #1c60af3f79850092000bc20dd67085c7
6 #b‘\x1c`\xaf?y\x85\x00\x92\x00\x0b\xc2\r\xd6p\x85\xc7‘

 

hashlib模块