hashlib模块

hashlib:封装了一些用于加密的类

常用加密算法:md5:文件校验,比如已知道服务器上的安装包的sha值,在本地检测下载好的文件的sha值是否一致

       sha系列:金融类,安全类,对安全性要求较高的企业。随着sha系列数字越高,加密越复杂,越不容易破解,但是耗时越长

特点:1.把一个大的数据,切分成不同块,分别对不同的块进行加密,

再汇总的结果和直接对整体数据加密的结果是一致的

      2.单向加密,不可逆

   3.原始数据的一点小的变化,将导致结果的非常大的差异,即'雪崩效应'

加密算法的基本步骤:

   1.获取一个加密对象

   2.使用加密对象的update方法,进行加密,update方法可以调用多次

   3.通常通过hexdigest方法获取加密结果

验证个数据两次加密的结果对比,

如果结果相同,说明数据相同

MD5算法代码展示

import hashlib


# 1.获取一个加密对象(可以直接在参数中添加数据对象而不需要使用update,结果是一样的)
m = hashlib.md5()
# 2.使用加密对象的update,对转换成bytes的数据类型进行加密
m.update(b'abc')
# 3.通过hexdigest获取加密结果
res = m.hexdigest()
print(res, len(res))

sha系列算法代码展示

s = hashlib.sha224()
s.update(b'abc')
print(s.hexdigest(), len(s.hexdigest())) # 不同的加密算法,实际上是加密结果长度的不同

必要时我们需要使加密过程更复杂化,这里就涉及到了一个概念‘加盐’

import hashlib


s = 'Python'
m = hashlib.md5('sault'.encode('utf-8'))  # 这里的盐我用sault指代,可以任意指定

# 原数据拆分成不同的块,分块加密,最后的加密结果是一致的
m.update('Py'.encode('utf-8'))
m.update('thon'.encode('utf-8'))
print(m.hexdigest())

s1 = 'happiness' m = hashlib.md5('sault'[::2].encode('utf-8')) # 这里我对某个数据类型进行切片,使'盐'更动态化 m.update(s1.encode('utf-8')) print(m.hexdigest())
posted @ 2020-08-19 09:19  LGQ天  阅读(162)  评论(0)    收藏  举报