这种存储密码的方式有多安全?

How secure is this way of storing passwords?

我理解并认识到,与使用 Google 或 Facebook 等服务相比,将密码存储在我自己的数据库中是一个巨大的安全漏洞,但我想知道是否可以使用以下代码安全地存储用户名和使用加盐哈希的密码:

$username = $_POST['user']
$salt = md5(openssl_random_psuedo_bytes(24, true));
$pass = sha1($salt.$_POST['pass'])

我认为它相当安全,但我不是专家。

编辑:

我认为这样会更好,对吗?

$salt1 = md5(sha1(openssl_random_psuedo_bytes(32, true));
$pass = password_hash($_POST['pass'] . $salt1, PASSWORD_BCRYPT);

我是否更接近于找到一种合适的密码存储机制?

非常糟糕(尽管可能更糟)

  1. SHA1 不是很安全。
  2. 所有直接哈希函数都太快而无法用于密码。

您应该使用 PBKDF2 或 bcrypt 或 scrypt。