模块(三)
hashlib 加密模块
加密理论
1. 加密的定义
将人类能够看懂的明文数据使用一定方法修改为"密文"数据
2. 加密算法
加密算法类似于摩尔斯密码。加密算法有很多,算法的难易程度可以根据同一明文数据的密文长度来判断。密文长的加密算法一般比较难。最常用的加密算法是md5算法。
import hashlib
md5 = hashlib.md5()
md5.update(b'24364242654..') # 将要加密的数据传给算法对象,只接受bytes数据
res = md5.hexdigest() # 获取加密后的密文
print(res) # 332b8e901f9d5ce8f1d70143993b479e
md5 = hashlib.md5()
md5.update(b'24364')
md5.update(b'2426')
md5.update(b'54..')
res1 = md5.hexdigest()
print(res1) # 332b8e901f9d5ce8f1d70143993b479e
只要需要加密的文本数据是一样的,无论分段传入加密或者是一起传入加密,密文是一样的
加密加盐处理
所谓的加盐处理就是通过增加一段需要加密的数据(干扰项)进行提高密文被解密的难度。
import hashlib
md5 = hashlib.md5()
md5.update('ccl'.encode('utf8')) # 加盐处理
md5.update(b'24364242654..')
print(md5.hexdigest())
动态加盐处理
动态加盐就是指增加的那一段干扰项是动态可变的。比如时间、部分用户名、部分密码等
动态加盐的密码比对
把用户输入的数据按照相同的加密方式进行加密,然后与数据库里的密文进行对比,如果一样就是正确的密码,不一样就是错误密码。
文件内容的一致性验证
我们作为开发者,在提供安全软件的同时会对该软件的内容进行加密处理得到一个该安全软件独有的密文。用户下载软件以后会对软件内容进行相同方式的加密对比两次加密后的密文是否一致。一致表示软件没有被中途修改,不一致表示被修改过