官方文档:https://docs.python.org/zh-cn/3/library/hashlib.html
什么是加密
将明文信息改变为难以读取的密文内容,使之不可读的过程。密文数据的表现形式一般都是一串没有规则的字符串
加密算法
加密算法有很多,算法的难易程度可以根据产生密文的长短来判断,越长意味着算法越复杂。常见的有。常见的 对称加密 算法主要有 DES、3DES、AES 等,常见的 非对称算法 主要有 RSA、DSA 等,散列算法 主要有 SHA-1、MD5 等
什么时候使用加密
涉及到隐私数据的时候,应该考虑使用加密,最为常见的就是对用户的密码加密,防止密码泄露
使用
普通加密
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 hashlibmd5 = 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
应用场景
密码加密如何比对
通过用户输入的明文,进行相同的加密算法变成密文,拿着密文与数据库里面的密文进行对比,如果一致就是密码正确不一致就是错误
文件内容一致性校验
用户在下载软件之后,也会对内容做相同的加密,之后比对两次密文是否一致,如果一致表示中途没有被修改,如果不是表示中途被修改过,可能存在病毒。针对大文件一致性校验的优化策略,可以考虑对文件内容进行切片读取并加密的操作
