我正在寻找最好的盐,我可以添加在我的用户密码


I am looking for best salt I can add in my user's password

我正在寻找密码中最好的盐,我可以为我的用户添加。

我已经用小盐保存了用户密码,如:

$pass = "deerox";
$salt = "fg55fd45";
$password = md5($pass . $salt);

所以我想要最好的盐,我现在将使用sha512,攻击者应该花很长时间来破解一个密码。

我不能为所有用户生成随机盐,因为我已经说过我已经为他们保存了密码。

$pass1 = "deerox";
$pass = md5($pass1);
$salt1 = "fRY^YXCH%^d5fdffdstre324e6t45";
$salt2 = "sdgdfg#$#$@%FDG%GFDG54fds545342";
$password = hash("sha512", $salt1 . $pass . $salt2);

只是想知道它是安全的,或者我可以让它更安全??

密码加密方案不正确。给它加任何东西都不会使它实质上更安全。你需要的是从一开始就有一个好的哈希+盐;现在已经太晚了,你无法真正提高已经散列的密码的安全性。

一个静态盐,甚至两个,或者从密码本身派生的盐都不是盐;salt需要是独立于密码的随机唯一值,以便将唯一性添加到每个哈希中。

在数据库中添加一个新标志,表示当前使用"遗留"哈希系统的密码。当用户下次登录时,您有机会获得他的明文密码,利用这个机会在更好的系统中重新散列密码,然后更新数据库中的标志。这样你就可以一点一点地将你的用户群升级到一个完全透明的安全哈希。

需要每个密码动态盐和适当的散列,如bcrypt或scrypt。使用http://github.com/ircmaxell/password_compat是一个很好的、易于使用的库,它实现了这两个功能。

首先一个密码不要散列两次

下一件事。如果您有一个数据库,您还应该在数据库中为每个用户设置一个随机盐。在你的代码中添加盐(就像你已经做过的那样)。

不要使用sha1或md5作为密码。您可以使用sha512。你还可以在这里看到更多关于好的密码哈希的信息:

PHP密码的安全哈希和盐