我正在使用BCrypt在服务器端对我的密码进行哈希处理。在将其存储在MySQL数据库中之前,对我的哈希BCrypt密码进行加密是否过大?或者将哈希直接存储在数据库中就足够了?
此website建议在对密码进行哈希处理后对其进行加密:
只要攻击者可以使用哈希来检查密码是否 猜测是对还是错,他们可以运行字典或暴力破解 攻击哈希。下一步是向哈希添加秘密密钥 这样只有知道密钥的人才能使用哈希值来验证 密码。这可以通过两种方式来完成。哈希可以是 使用AES等密码进行加密,或者可以包含秘密密钥 使用像HMAC这样的键控散列算法进行散列。
编辑:我正在用Java编码。我正在尝试评估增加的保护层与用户登录密码的读取和检索速度性能是否值得。
答案 0 :(得分:1)
这确实可以提高安全性,但是最好知道加密带来的好处。
这种情况并没有人们想象的那么普遍,典型的情况是SQL注入,丢弃备份,丢弃服务器...
要能够强行输入密码,需要服务器端密钥,该密钥用于加密密码哈希。这意味着,仅从数据库中读取哈希值已不再足够,需要其他特权才能从服务器读取密钥。在服务器上获得特权比能够读取数据库要困难得多。
Crackstation是一个很好的建议站点。在关于safely storing password的教程结束时,我尝试解释这种密码哈希加密的细节。