lithemod/

hash

使用Bcrypt对密码进行散列的有效模块。

v1.0.0 2024-10-02 10:46 UTC

This package is auto-updated.

Last update: 2024-10-02 11:00:26 UTC


README

这是一个用于安全散列密码的强大模块,使用Bcrypt。此模块简化了创建、验证和管理密码散列的过程,确保遵循安全最佳实践。

目录

安装

要安装 lithemod/hash 包,您可以使用Composer。在您的终端中运行以下命令

composer require lithemod/hash

这将把该包添加到您的项目依赖中,使您可以在应用程序中使用 Hash 类。

用法

导入类

在使用 Hash 类之前,您必须在PHP文件中导入它

use Lithe\Support\Security\Hash;

创建散列

要从密码创建散列,请使用 make 方法。该方法接受一个密码和一个可选的选项数组

$hash = Hash::make('your_password', ['cost' => 10]);
  • 参数:
    • string $value:要散列的密码。
    • array $options:可选参数(例如,成本)以调整散列算法。
  • 返回:一个可以存储在数据库中的散列字符串。

示例:

$password = 'my_secure_password';
$hash = Hash::make($password, ['cost' => 12]);
echo "Hashed Password: " . $hash;

验证散列

要检查给定的密码是否与散列匹配,请使用 check 方法

$isValid = Hash::check('your_password', $hash);
if ($isValid) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
  • 参数:
    • string $value:要验证的密码。
    • string $hash:要比较的散列密码。
  • 返回true 如果密码与散列匹配;否则 false

示例:

if (Hash::check('my_secure_password', $hash)) {
    echo 'Password is correct!';
} else {
    echo 'Password is incorrect!';
}

检查散列是否需要重新散列

您可以使用 needsRehash 方法确定散列是否需要重新散列(例如,如果您更改成本因子)

$needsRehash = Hash::needsRehash($hash, ['cost' => 14]);
if ($needsRehash) {
    // Rehash with a new cost
    $hash = Hash::make('your_password', ['cost' => 14]);
}
  • 参数:
    • string $hash:要评估的散列密码。
    • array $options:可选参数以指定成本。
  • 返回true 如果散列需要重新散列;否则 false

示例:

if (Hash::needsRehash($hash, ['cost' => 15])) {
    $hash = Hash::make('my_secure_password', ['cost' => 15]);
    echo "Rehashed Password: " . $hash;
}

理解Bcrypt

Bcrypt 是一个广泛使用的密码散列函数,旨在慢速且计算密集,使其对暴力攻击具有抵抗力。通过使用可配置的成本因子,Bcrypt 允许您随着硬件变快而增加散列的难度。

  • 成本因子:成本因子决定了散列密码的计算复杂性。它代表散列算法的迭代次数。更高的成本意味着更高的安全性,但也增加了处理时间。对于大多数应用程序,建议的范围是10到12。

处理异常

如果将成本设置为无效范围之外(4到31),则 make 方法会抛出 InvalidArgumentException。您应该在代码中处理此情况以确保健壮性。

try {
    $hash = Hash::make('your_password', ['cost' => 3]); // Invalid cost
} catch (\InvalidArgumentException $e) {
    echo "Error: " . $e->getMessage();
}

测试

为确保 lithemod/hash 模块的安装正确无误,您可以运行包含的单元测试。如果您已安装 PHPUnit,请在项目目录中执行以下命令

./vendor/bin/phpunit

这将运行在 Tests 命名空间中定义的测试,并验证 Hash 类的功能。

许可证

此软件包采用 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。