security - 为什么不存储原始密码?

标签 security passwords

我是网络开发新手。我可以存储用户的原始密码吗?我知道好的做法是使用盐来存储散列密码,但为什么我们不存储原始密码呢?

是因为数据库很容易被黑客攻击,所以通过哈希来保护密码吗?还有其他原因吗?如果没有,我想在合法的情况下存储原始密码。

最佳答案

合法性取决于您居住的国家/地区。但也有最佳实践。最佳实践是加密用户的密码。这样,如果有人闯入您的数据库,他们将无法获取一长串密码,并在 ebay、yahoo mail 和 gmail 中逐一尝试。用户通常在许多网站上使用完全相同的用户名和密码对。

正如 Jon 在评论中指出的那样,哈希和加密之间当然是有区别的。散列是一种单向的、数据破坏性的过程,它将任意长度的字符串作为输入,并输出固定长度的字符串。该字符串的定义方式是,更改原始输入中的任何一位都会导致哈希值不同。因此,如果您有哈希值,则无法重建原始文本(即无法恢复密码)。

另一方面,加密是一种可以恢复原始密码、知道 key 、密码等的技术。

通常,您想要对密码进行哈希处理,而不是对其进行加密:这是没有必要的,而且设置起来更复杂。您也不应该恢复密码:您只需重新生成它们。

关于security - 为什么不存储原始密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3107810/

相关文章:

php - 我的代码不会写入 mysql 数据库

security - 如何在 Python 2.7 中安全地验证 HMAC?

java - 简单的 JAVA : Password Verifier problem

security - 如何在不使用 CAPTCHA 组件的情况下防止批量漏洞扫描?

c++ - 在 C/C++ 中,是否可以通过使用指针更改 "important"内存地址的值来创建简单的恶意软件?

php - 警告 : mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean 值

安卓|如何以编程方式禁用输入的自动建议?

c++ - 我正在创建一个 C++ 程序,其中用户有 2 次尝试密码用户名组合的尝试。如果他们不能得到它,他们的程序就会停止

php - $_FILES ['' ] ['size' ] - PHP 是否在服务器端检查文件大小?

php - 如何为用户输入生成的 mySQL 列添加添加安全性?