python

python3中的hashlib库主要是为大家提供了python中常用的加密方式

其中SHA1官方不再支持,不建议用。md5()的安全性不如SHA2,所以推荐使用SHA2做加密算法

hashlib里面的加密方式都是单向加密,没有反加密方式,所以在使用时,比如密码验证,在数据库里面存储的是加密后的值,再把用户输入的密码进行相同加密方式,再对比

hashlib里面主要提供 md5, sha1, sha224, sha256, sha384, sha512 算法
各种加密算法在使用上,只是声明加密方式的时候名字不同,其他操作完全一样

hashlib模块:

 1 import hashlib
 2 
 3 print(''' 
 4      =============cmd5加密============
 5     ''')
 6 
 7 m = hashlib.md5()   #声明用什么加密方式
 8 m.update(b"Hello")
 9 m.update(b"It's me")          #对数据加密用uodate()  注意要把被加密数据转为二进制形式
10 print('cmd5加密结果:',m.hexdigest())
11 
12 print(''' 
13      =============sha224加密============
14     ''')
15 
16 m = hashlib.sha224()   #声明用什么加密方式
17 m.update(b"Hello")
18 m.update(b"It's me")
19 print('sha224加密结果:',m.hexdigest())
20 
21 
22 print(''' 
23      =============sha256加密============
24     ''')
25 
26 m = hashlib.sha256()   #声明用什么加密方式
27 m.update(b"Hello")
28 m.update(b"It's me")
29 print('sha256加密结果:',m.hexdigest())
30 
31 print(''' 
32      =============sha384加密============
33     ''')
34 
35 m = hashlib.sha384()   #声明用什么加密方式
36 m.update(b"Hello")
37 m.update(b"It's me")
38 print('sha384加密结果:',m.hexdigest())
39 
40 print(''' 
41      =============sha512加密============
42     ''')
43 
44 m = hashlib.sha512()   #声明用什么加密方式
45 m.update(b"Hello")
46 m.update(b"It's me")
47 print('sha512加密结果:',m.hexdigest())
48 
49 '''
50  
51      =============cmd5加密============
52     
53 cmd5加密结果: 5ddeb47b2f925ad0bf249c52e342728a
54  
55      =============sha224加密============
56     
57 sha224加密结果: 56baaebedb486c687432e20c1675dd406146f5c17abf107ab018eaf5
58  
59      =============sha256加密============
60     
61 sha256加密结果: 54e3c292b4668c9697593680b71f15cfcc634031dc82349a7fd5ae1c544463ef
62  
63      =============sha384加密============
64     
65 sha384加密结果: 5346981d17ebdf271f45509861bcf6d0757f6a31c3fb58feb8b354b6b60810dcbb4d74dc937ab258676f8eae0324118f
66  
67      =============sha512加密============
68     
69 sha512加密结果: 1aa9c253210096bee3533370dacb3960f6a995a7d1e993c54d32d3ec43e496b3558ac05f87ca6ac9b06036e03f84a7c0ffebd3d14589385c7fd0b096cea967c0
70 
71 
72 '''

hmac模块:

  还有一个基于hashlib模块的加密模块-- hmac 模块

  hmac模块是在hashlib模块之上,再在它内部对我们创建 key 和 内容 再进行处理然后再加密散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;

  一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后用key把消息加密,接收方用 (key + 消息明文)再加密,拿加密后的值 跟 发送者

的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了

  hmac模块用法:

1 import hmac
2 
3 k = hmac.new(b'xtsec')   #创建一个自定义key
4 k.update(b'hello world!')   #对消息进行加密,可以分开加密,但是要注意空格也要算在内 eg:k.update(b'hello ')   k.update(b'world') 与前面一样
5 print(k.hexdigest())

结果: e9814092d76de9f4502a39b172a848b2
原文地址:https://www.cnblogs.com/xtsec/p/6681619.html