存储用户密码时,推荐使用哪种加密算法来确保安全?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2935个文字,预计阅读时间需要12分钟。
概述+编程开发中,用户登录注册这类功能非常常见,那么对于用户密码处理,我们应选择什么样的加密算法呢?在这种场景下,算法需要满足以下两个条件:+算法需不可逆,这样才能保证安全性。
概述编程开发中,像用户登录注册这种功能很常见,那么对于用户密码处理,我们该选择什么样的加密算法呢?在这种场景下,算法需要满足下面两个条件:
- 算法需不可逆,这样才能有效防止密码泄露。
- 算法需相对慢,可以动态调整计算成本,缓慢是应对暴力破解有效方式。
目前来看有这么几个算法 PBKDF2、 BCrypt 和 SCrypt 可以满足。我们先看下旧的密码加密方式。
旧的加密过去密码加密常用MD5或者SHA。MD5是早期设计的加密哈希,它生成哈希速度很快,随着计算机能力的增强,出现了被破解的情况,所以又有了一些长度增大的哈希函数,如:SHA-1,SHA-256等。下面是它们的一些比较:
-
MD5:速度快生成短哈希(16 字节)。意外碰撞的概率约为:\(1.47 \times 10^{-29}\) 。
-
SHA1:比 md5 慢 20%,生成的哈希比 MD5 长一点(20 字节)。意外碰撞的概率约为:\(1 \times 10^{-45}\)。
-
SHA256:最慢,通常比 md5 慢 60%,并且生成的哈希长(32 字节)。意外碰撞的概率约为:\(4.3 \times 10^{-60}\) 。
本文共计2935个文字,预计阅读时间需要12分钟。
概述+编程开发中,用户登录注册这类功能非常常见,那么对于用户密码处理,我们应选择什么样的加密算法呢?在这种场景下,算法需要满足以下两个条件:+算法需不可逆,这样才能保证安全性。
概述编程开发中,像用户登录注册这种功能很常见,那么对于用户密码处理,我们该选择什么样的加密算法呢?在这种场景下,算法需要满足下面两个条件:
- 算法需不可逆,这样才能有效防止密码泄露。
- 算法需相对慢,可以动态调整计算成本,缓慢是应对暴力破解有效方式。
目前来看有这么几个算法 PBKDF2、 BCrypt 和 SCrypt 可以满足。我们先看下旧的密码加密方式。
旧的加密过去密码加密常用MD5或者SHA。MD5是早期设计的加密哈希,它生成哈希速度很快,随着计算机能力的增强,出现了被破解的情况,所以又有了一些长度增大的哈希函数,如:SHA-1,SHA-256等。下面是它们的一些比较:
-
MD5:速度快生成短哈希(16 字节)。意外碰撞的概率约为:\(1.47 \times 10^{-29}\) 。
-
SHA1:比 md5 慢 20%,生成的哈希比 MD5 长一点(20 字节)。意外碰撞的概率约为:\(1 \times 10^{-45}\)。
-
SHA256:最慢,通常比 md5 慢 60%,并且生成的哈希长(32 字节)。意外碰撞的概率约为:\(4.3 \times 10^{-60}\) 。

