BCrypt.hashpw(111111, BCrypt.gensalt())我应该如何使用这个函数
时间: 2024-09-25 14:18:34 浏览: 39
bcrypt.js:在纯JavaScript中具有零依赖关系的优化bcrypt
BCrypt.hashpw() 和 BCrypt.gensalt() 是 BCrypt 密码哈希库(PHP 的一个扩展)中的两个函数,用于安全地存储用户密码。这里是如何使用它们的过程:
1. **生成盐值 (Salts)**:
BCrypt.gensalt() 会生成一个随机的、不易预测的字符串作为盐(salt)。盐是用来增加密码安全性的重要组成部分,因为它使得即使两个用户使用相同的密码,他们的哈希结果也会因盐的不同而不同。推荐使用 `BCRYPT_GENSALT()`,这是生成默认强度盐的常量。
```php
$salt = bcrypt_gensalt();
```
2. **哈希密码**:
使用生成的盐对原始密码进行哈希。BCrypt.hashpw() 函数接收两个参数:一个是待加密的密码(这里是 "111111"),另一个是之前生成的盐。
```php
$passwordToHash = '111111';
$hashedPassword = bcrypt_hashpw($passwordToHash, $salt);
```
注意这里的 `bcrypt_hashpw()` 要求输入的密码是字符串,即使是数字也需要加上单引号。
3. **存储哈希值**:
将 `$hashedPassword` 存储到数据库中,而不是原始的密码。当验证用户登录时,再次生成相同的盐,并使用相同的算法对比输入的密码和数据库中的哈希值,而非直接比较。
```php
// 假设你将 $hashedPassword 存储到了 $usersTable['password']
if (bcrypt_checkpw($enteredPassword, $usersTable['password'])) {
echo '密码匹配';
} else {
echo '密码错误';
}
```
在上面的示例中,`bcrypt_checkpw()` 函数用于实际的密码校验。
阅读全文