crudle/phash

密码散列类

v1.0 2016-12-05 17:15 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:10:32 UTC


README

Crudle\Phash 提供了一个方便的包装类,用于原生 password_hash 函数。这个的主要好处是可以保持面向对象。

安装

composer require crudle/phash

使用

PasswordHash 的最简单用法确实就是如此;简单!

$hash = new PasswordHash('mypassword');

字符串 'mypassword' 将会被散列并存储在对象中。如果你提供一个已经散列的字符串,值将被存储,不会进行散列。

// This works too! This is the hash that was generated from 'mypassword'
$hash = new PasswordHash('$2y$10$F4L/hmnkYOSvGqU0tI4DuuszxFarOedNQA1Ws.ZHwKcRLmUlWaDTW');

一旦你创建了 PasswordHash 对象(无论是从原始密码还是散列字符串创建),你就可以在它上面执行所有原生操作

$hash = new PasswordHash('$2y$10$F4L/hmnkYOSvGqU0tI4DuuszxFarOedNQA1Ws.ZHwKcRLmUlWaDTW');
$hash->verify('mypassword'); // Throws an InvalidPasswordException if validation fails

获取散列值

如果不将散列值存储起来供以后验证,散列密码就没什么用处。幸运的是,我们只需将对象转换为字符串,就能得到我们的散列值。

$passwordHash = new PasswordHash('mypassword');
$hash = (string) $passwordHash;

额外配置

默认情况下,该包使用 PASSWORD_DEFAULT 散列算法。如果你想更改它或任何散列选项,你可以向 PasswordHash 构造函数提供一个自定义的 Config 对象。

$config = new Config(PASSWORD_BCRYPT, ['cost' => 12]);
$hash = new PasswordHash('mypassword', $config);

可用方法

$hash->verify('mypassword'); // throws InvalidPasswordException
$hash->needsRehash(); // throws HashValidationException
$hash->getInfo(); // returns an array of config info
$hash->__toString(); // returns the hash string