lithemod/ hash
使用Bcrypt对密码进行散列的有效模块。
v1.0.0
2024-10-02 10:46 UTC
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ^11.0
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 文件。