hashlib加密模块

官方文档:https://docs.python.org/zh-cn/3/library/hashlib.html

什么是加密

将明文信息改变为难以读取的密文内容,使之不可读的过程。密文数据的表现形式一般都是一串没有规则的字符串

加密算法

加密算法有很多,算法的难易程度可以根据产生密文的长短来判断,越长意味着算法越复杂。常见的有。常见的 对称加密 算法主要有 DES3DESAES 等,常见的 非对称算法 主要有 RSADSA 等,散列算法 主要有 SHA-1MD5

什么时候使用加密

涉及到隐私数据的时候,应该考虑使用加密,最为常见的就是对用户的密码加密,防止密码泄露

使用

普通加密

import hashlib

# 1.指定md5算法(最为常见)
md5 = hashlib.md5()
# 2.将明文数据传递给算法对象
md5.update(b'123')  # 只能接收bytes类型
"""如果字符串中是纯数字和英文 那么直接在前面加b转成bytes类型"""
# 3.获取加密之后的密文数据
res = md5.hexdigest()

print(res)
# 202cb962ac59075b964b07152d234b70

"""加密之后的结果是无法直接反解密的 """

# 所谓的反解密其实是暴力破解,反复的猜
{'密文1':123,'密文2':321}

加盐处理

目的是为了增加破解的难度(添加一些额外的干扰项)

import hashlib

md5 = hashlib.md5()

# 加盐处理
md5.update('这是加盐的内容'.encode('utf8'))
md5.update(b'123')
res = md5.hexdigest()
print(res)
# daa22f9b2e6560ded7fe0bc29dfac35b


# 动态加盐

times = str(datetime.date.today())  # 通过当前年月日进行动态加盐
md5.update(times.encode())
md5.update(b'123')
res = md5.hexdigest()
print(res)
# 07f7006c551222d7478932efe136aaf8

应用场景

密码加密如何比对

通过用户输入的明文,进行相同的加密算法变成密文,拿着密文与数据库里面的密文进行对比,如果一致就是密码正确不一致就是错误

文件内容一致性校验

用户在下载软件之后,也会对内容做相同的加密,之后比对两次密文是否一致,如果一致表示中途没有被修改,如果不是表示中途被修改过,可能存在病毒。针对大文件一致性校验的优化策略,可以考虑对文件内容进行切片读取并加密的操作

Last modification:April 9, 2022
如果觉得我的文章对你有用,请随意赞赏