简述
用于加密相关的操作,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:
- 以上这几种,其实都是对MD5加密的不同算法
- 其中sha256用的最多,比MD5要安全的多
- 有些公司会用加盐方式加密,比如:把字符串"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?yx85x00x92x00x0bxc2 xd6px85xc7'