Skip to content

面试速答(先看这里)

**一句话结论:**加密算法需要加密和解密,MD5是单向的,不可逆,所以是无法通过解密得到原始数据的。

60秒标准回答:

MD5是一种散列函数,用于生成一个固定长度,固定值的摘要信息

MD5是一种消息摘要算法,不是加密算法 。它的作用是对原始数据进行一种压缩,以生成一个固定长度的字符串作为该数据的数字指纹,以验证数据的完整性和一致性

加密算法需要加密和解密,MD5是单向的,不可逆,所以是无法通过解密得到原始数据的

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**MD5是一种散列函数,用于生成一个固定长度,固定值的摘要信息。
  • **要点2:**MD5是一种消息摘要算法,不是加密算法 。
  • **要点3:**但是,MD5算法不是绝对安全的 。
  • **要点4:**因此,对于对安全性要求更高的场合,可以使用更安全的哈希算法,例如SHA-256或更高版本的哈希算法。
  • **要点5:**SHA-256是一种密码散列函数,常被用于对数据进行签名或生成信息摘要。

**记忆锚点:**SHA-256 → MD5 → MD5是一种消息摘要算法不是加密算法 → 证数据的完整性和一致性 → 或更高版本的哈希算法 → 列中最常用的散列算法

易错提醒:

  • 由于MD5算法生成的哈希值长度是固定的,所以存在" 碰撞 "的情况,即两个不同的消息生成的哈希值是相同的,所以如果用于数据安全的场合,MD5算法是不能保证安全的。
  • 与其他散列算法一样,SHA-256在进行操作时不能逆向解密。

追问准备:

  • 围绕「SHA-256」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「MD5」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「MD5是一种消息摘要算法不是加密算法」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

MD5是一种散列函数,用于生成一个固定长度,固定值的摘要信息。

MD5是一种消息摘要算法,不是加密算法。它的作用是对原始数据进行一种压缩,以生成一个固定长度的字符串作为该数据的数字指纹,以验证数据的完整性和一致性。

加密算法需要加密和解密,MD5是单向的,不可逆,所以是无法通过解密得到原始数据的。

但是,MD5算法不是绝对安全的。由于MD5算法生成的哈希值长度是固定的,所以存在"碰撞"的情况,即两个不同的消息生成的哈希值是相同的,所以如果用于数据安全的场合,MD5算法是不能保证安全的。

因此,对于对安全性要求更高的场合,可以使用更安全的哈希算法,例如SHA-256或更高版本的哈希算法。

扩展知识 ​

SHA-256 ​

SHA-256是一种密码散列函数,常被用于对数据进行签名或生成信息摘要。

与其他散列算法一样,SHA-256在进行操作时不能逆向解密。SHA-256生成的消息摘要长度为256位,这使得其非常适合于加密数字签名。

SHA-256是SHA-2系列中最常用的散列算法,也是最可靠的。

为什么不会碰撞?

因为SHA-256在生成消息摘要时,使用了大量的位运算、逻辑运算和移位运算等,并且消息摘要长度非常长,因此生成的消息摘要具有很强的随机性。在实际应用中,发生碰撞的概率极低,几乎不可能发生。因此,SHA-256是一种可靠的安全哈希算法。