模块讲解----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())

 

posted @ 2017-12-25 14:27  风之岚翔  阅读(609)  评论(0编辑  收藏