模块讲解----hashlib模块(加密)
作用
用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
语法
1 import hashlib 2 3 #md5加密: 4 obj = hashlib.md5() 5 obj.update(bytes('123',encoding='utf-8')) 6 result = obj.hexdigest() 7 print(result) 8 9 10 #md5二次加密: 11 obj1 = hashlib.md5(bytes('MGFhMWJiNjQ2MTAMDMwMzlmNTM2ZjZ',encoding='utf-8')) 12 obj1.update(bytes('123',encoding='utf-8')) 13 result1 = obj1.hexdigest() 14 print(result1) 15 16 17 # ######## md5 ######## 18 hash = hashlib.md5() 19 # help(hash.update) 20 hash.update(bytes('admin', encoding='utf-8')) 21 print(hash.hexdigest()) 22 print(hash.digest()) 23 24 25 ######## sha1 ######## 26 27 hash = hashlib.sha1() 28 hash.update(bytes('admin', encoding='utf-8')) 29 print(hash.hexdigest()) 30 31 # ######## sha256 ######## 32 33 hash = hashlib.sha256() 34 hash.update(bytes('admin', encoding='utf-8')) 35 print(hash.hexdigest()) 36 37 38 # ######## sha384 ######## 39 40 hash = hashlib.sha384() 41 hash.update(bytes('admin', encoding='utf-8')) 42 print(hash.hexdigest()) 43 44 # ######## sha512 ######## 45 46 hash = hashlib.sha512() 47 hash.update(bytes('admin', encoding='utf-8')) 48 print(hash.hexdigest()) 49 50 注意:以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。 51 52 import hashlib 53 54 # ######## md5 ######## 55 56 hash = hashlib.md5(bytes('898oaFs09f',encoding="utf-8")) 57 hash.update(bytes('admin',encoding="utf-8")) 58 print(hash.hexdigest()) 59 60 python内置还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密: 61 62 63 64 import hmac 65 66 h = hmac.new(bytes('898oaFs09f',encoding="utf-8")) 67 h.update(bytes('admin',encoding="utf-8")) 68 print(h.hexdigest())