haslib 模块

一、能够把一个字符串数据类型的变量,转换成一个定长的,密文的字符串。且每一个字符串中的字符都是一个十六进制的数子。

二、对于相同的字符串,无论字符串多长,无论在什么环境下,任何语言中,使用相同的算法得出的结果都是一样的。只要不是相同的字符串,结果就是不同的。

三、常用的两种加密算法

  MD5算法  (不可逆)

  得到的结果是一个32位的字符串,且每个字符串都是一个十六进制的数字。

  效率快,相对简单。

  sha1 算法   (不可逆)

  得到一个40位的字符串,且每个字符串是一个是一个十六进制的数字。

  算法相对复杂。

  

  撞库

  由于MD5,sha1算法不可逆,所以有一批‘有志之士’就将好多的数字字母的组合计算出的密文值,存在一个库中。这样当截获了密文值就可以去库中匹配,如果有相同的,就查他对应的原字符串。

  因此出现了撞库,同时使得这个加密算法相对出现了些风险。

  加盐的MD5算法

  

  动态加盐

  对于一些用户名和密码,因为用户名是唯一的,所以将用户名作为盐,在进行加密计算,这样得出的结果的安全性将会更高。

  

  可以用于文件的一致性校验。

  

  如果文件过大,还可以按字节读取。

  完整的读完一个文件计算的MD5值和分段读完最后的MD5值是一样的。

原文地址:https://www.cnblogs.com/wf123/p/9456898.html