开发技能SSM & SpringSecurity加解密算法摘要哈希加密Hash

摘要算法又称哈希算法、散列算法。该算法(如 MD5SHA1SHA-256)是一种不可逆的算法,用于生成固定长度、短小的“指纹”(即哈希值、散列值或摘要)以验证数据完整性。它不需要密钥,常用于密码存储和文件校验。**

  • 单向性(无法从指纹反推出原文)、确定性(同一输入永远得到同一输出)、雪崩效应(原文一点点变化,指纹面目全非)
  • 不同输入尽量产生不同输出(低碰撞概率) 常见的 Hash 有 CRC、SHA1、SHA2、SHA3、SHA256 和 MD5。
hash_code = sha256(message);

Hash 具有抗碰撞的特性,即在指定的输入范围内保证两个不同的数据生成的摘要是不同的。借助此特性,Hash 最大的用途是通过小体积的摘要值,来执行数据的完整性校验。以上图为例,发送放将 1G 的消息数据和 MD5 算法 生成的 128bit 的摘要发送给接受方;接收方接受到消息+摘要后也使用 MD5 算法重新计算消息的摘要,然后对比接收到的摘要与计算后的摘要,若两者相等就代表消息没有发生误码或者被篡改。

Hash 函数并不能保证数据来自合法的发送方,如果是不法分子使用 MD5 算法发送一段数据+摘要给到数据接收者,那么接收者仍旧会接收该数据,从而造成安全风险。

Built with LogoFlowershow