haslib 模块
一、能够把一个字符串数据类型的变量,转换成一个定长的,密文的字符串。且每一个字符串中的字符都是一个十六进制的数子。
二、对于相同的字符串,无论字符串多长,无论在什么环境下,任何语言中,使用相同的算法得出的结果都是一样的。只要不是相同的字符串,结果就是不同的。
三、常用的两种加密算法
MD5算法 (不可逆)
得到的结果是一个32位的字符串,且每个字符串都是一个十六进制的数字。
效率快,相对简单。
sha1 算法 (不可逆)
得到一个40位的字符串,且每个字符串是一个是一个十六进制的数字。
算法相对复杂。
撞库
由于MD5,sha1算法不可逆,所以有一批‘有志之士’就将好多的数字字母的组合计算出的密文值,存在一个库中。这样当截获了密文值就可以去库中匹配,如果有相同的,就查他对应的原字符串。
因此出现了撞库,同时使得这个加密算法相对出现了些风险。
加盐的MD5算法
动态加盐
对于一些用户名和密码,因为用户名是唯一的,所以将用户名作为盐,在进行加密计算,这样得出的结果的安全性将会更高。
可以用于文件的一致性校验。
如果文件过大,还可以按字节读取。
完整的读完一个文件计算的MD5值和分段读完最后的MD5值是一样的。