📜  如何保护PHP密码的哈希值和盐值?

📅  最后修改于: 2022-05-13 01:54:11.533000             🧑  作者: Mango

如何保护PHP密码的哈希值和盐值?

Salting 和 hashing 是一种将密码存储在数据库中的技术。在密码学中,salting 意味着添加一些内容以及密码,然后对其进行散列。所以 salt 和 hash 提供了两个级别的安全性。 Salting 总是生成唯一的密码,即如果有两个相同的密码,在 salting 之后,结果字符串会改变。加盐与散列一起使用提高了密码的安全级别。

加盐和散列:在PHP,通过加盐和散列存储密码是通过 password_hash() 方法完成的。此方法接受三个参数并返回该密码的最终哈希值。

句法:

string password_hash( string $pass, int $algo, array $options )

参数:

  • $pass:此参数保存要保护并存储在数据库中的密码。
  • $algo:它指定用于创建 $pass 散列的散列算法。 PHP中的一些算法参数是:
    1. PASSWORD_DEFAULT:使用 bcrypt 算法(自PHP 5.5.0 起默认)。该常量旨在随着新的和更强大的算法添加到PHP而随时间变化。
    2. PASSWORD_BCRYPT:它是创建哈希的 CRYPT_BLOWFISH 算法。结果为 60 个字符的字符串或在失败时给出 FALSE。
  • $options:这是腌制部分。它需要盐的形式成本因素。它是可选的,如果留空,则将默认成本添加到字符串(大多数情况下为 10)。请注意,更多的成本会导致密码的保护性更强,从而给 CPU 带来沉重的负担。

返回值:它返回散列的密码,失败时返回 FALSE。



示例:本示例演示了password_hash()、hash 的制作和比较。

 9));
  
// Use password_verify() function to
// verify the password matches
echo password_verify('Password',
            $hash_default_salt ) . "
";    echo password_verify('Password',             $hash_variable_salt ) . "
";    echo password_verify('Password123',             $hash_default_salt );    ?>

输出:

1
1
0

在此示例中,password_verify() 方法用于将创建的哈希与作为参数输入的字符串进行比较。它将散列和要比较的字符串作为参数,如果密码正确则返回真,否则返回假。