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