hashlib模块-加密算法

2020-07-08  本文已影响0人  夕阳_好

hashlib 模块提供了常见的摘要算法,如MD5,SHA1

摘要算法(又称哈希算法、散列算法):
原理:它通过一个函数,把任意长度的数据转为一个长度固定的数据串(通常用16进制的字符串表示)

加密概念:单向的加密,反推理论上不可能。

算法:

一 、MD5:
最常见的摘要算法,特点:速度快,生成的结果是128位字节,通常用32位id 16进制字符串表示

例如:

a = b'good morning'
m5 = hashlib.md5()
m5.update(a)
print(m5.hexdigest()) # 进行16进制转化生成32位字符串
输出:2b849500e4585dab4196ec9a415edf8f

一般结合base64使用, 例如
a = '12345'
a = a.encode('utf-8')
a = base64.b64encode(a)
md5 = hashlib.md5()
m5.update(a)
print(m5.hexdigest())

如果数据量比较大, 可以分多次调用update,最后的结果是一样的

m6 = hashlib.md5()
m6.update(b'good ')
m6.update(b'morning')
print(m6.hexdigest())
输出是一样的加密结果:
2b849500e4585dab4196ec9a415edf8f
2b849500e4585dab4196ec9a415edf8f

二 、SHA1:重点:
调用SHA1与调用MD5完全一样,SHA1的结果是160bit字节,通常40位16进制字符串表示

a2 = b'good morning'
sh1 = hashlib.sha1()
sh1.update(a2)
print(sh1.hexdigest())
输出结果对比32位和40位:
2b849500e4585dab4196ec9a415edf8f
a8cbec7254dd9499e2f86d55098931a41db62d6e


三、 更安全的:
SHA256
SHA512
越安全的算法不仅越慢,摘要会越长

四、应用:
任何允许用户登录的网站都会存储用户登录的用户名和密码,那么密码一般存储的是原密码的摘要值。

如果明文存到数据库中,数据库泄露,信息就会暴露不安全。
前端传过来密码会在后端进行加密获得摘要值,与数据库存储的摘要值对比是否相等,来决定是否登录成功。

上一篇 下一篇

猜你喜欢

热点阅读