想象这样的场景,有客户给你发机密文件。那你怎么确定你收到的文件就是客户发你的,而没有被第三方恶意篡改过呢?
摘要算法可以解决这个问题。
通过摘要算法,可以将文件生成一个摘要的字符串。内容不一样的文件,生成相同的摘要字符串的概率极低。因此,比较两个文件是否一样只需比较摘要字符串是否一样即可。上面的问题,我们可以这么解决
常见的摘要算法有 CRC8,MD5,SHA1,SHA512 等。
1 验证软件是否被篡改 大多数大型软件公司或开源组织用摘要算法来校验下载的软件是否被篡改。这些软件的下载页面,会有下载软件的 MD5 或类似的摘要值。
2 对敏感加密 一般从网页向服务器端,发送的用户密码会用 MD5 加密。服务器的数据库里也会存加密后的密码。这样,即使数据库的数据泄漏了,泄漏的也只是加密数据。当然,别有用心的人会计算常见的密码的 MD5 值,生成“字典”(专业称呼是彩虹表)。通过查“字典”可以得到部分加密前的密码值。所以,一般会对 MD5 的数据再混入一些无关数据,称为“加盐”。