jabarihunt/password

简单的密码类。

v1.0.1 2020-04-12 07:35 UTC

This package is auto-updated.

Last update: 2024-09-12 17:42:42 UTC


README

这是一个简单的类,它使用标准的PHP方法password_hash()password_verify()来创建哈希密码,并分别将哈希与输入的密码进行比较。这个类的主要目的是在执行这些密码操作时移除一些样板代码。

类默认使用PHP选择的默认算法(每个版本)和成本10。这两个值在创建哈希时都可以设置。

注意:建议存储使用password_hash()创建的哈希值的数据库列至少为255个字符宽,因为哈希的长度将在PHP的未来版本中增长!

安装

通过Composer

在 composer.json 文件相同的目录下运行以下命令

php composer.phar require jabarihunt/password

通过Github

  1. 将此存储库克隆到工作目录:git clone git@github.com:jabarihunt/password .

  2. 在您的项目中包含Password类...

require('/path/to/Password.php')

...或者如果使用自动加载...

 use jabarihunt/Password;

使用方法

Password::create()Password::compare()方法在接收到无效数据时将抛出异常,因此请确保使用try/catch块!

创建密码哈希

<?php

    $password = 'FooBar1@';
    
    try {
        $hash1 = Password::create($password);                       // basic usage
        $hash2 = Password::create($password, PASSWORD_BCRYPT);      // set algorithm
        $hash3 = Password::create($password, PASSWORD_BCRYPT, 12);  // set algorithm & cost
    } catch (\Exception $e) {
        var_dump($e);
    }
    
    echo "hash1: {$hash1} <br/> hash2: {$hash2} <br/> hash3: $hash3}";

?>
/* OUTPUT*/
hash1: $2y$10$lqfDbrxDEwnw34uaJCBN4OLatL3XKWnxuIwBTHqhcY5NVvvljlnd6 
hash2: $2y$10$2b2nHGE1Jx58AyHxVwWiq.EC039DNB9HLzcY.3b7tpEdIvLg6j30q 
hash3: $2y$12$e284Os/7zD4MsxXFX9h5UuKj3disIkmOkIJRzj4CnMoT3np7tyD2y

比较密码和哈希

使用上面的第一个哈希...

<?php

    $password = 'FooBar1@';
    $hash     = '$2y$10$lqfDbrxDEwnw34uaJCBN4OLatL3XKWnxuIwBTHqhcY5NVvvljlnd6';
    
    try {
        $passwordIsValid = Password::compare($password, $hash);  // returns boolean
        var_dump($passwordIsValid);
    }
    catch (\Exception $e) {
        var_dump($e);
    }

?>
/* OUTPUT*/
/var/www/html/controllers/HomeController.php:7:boolean true

验证密码

还有一个名为Password::isValid()的第三个方法,它验证密码是否遵循以下规则并返回一个布尔值。最终我将添加功能以传递您自己的规则。该方法不会抛出任何异常。

密码规则

  • 不为空
  • 至少包含8个字符
  • 至少包含1个大写字母
  • 至少包含1个小写字母
  • 至少包含1个数字
  • 至少包含1个符号

您可以可选地传递一个名为$username的第二个字符串参数,以确保密码不包含用户名(或传递的字符串包含的内容)。

<?php

    $username = 'Foo';

    $password1 = 'FooBar';
    $password2 = 'FooBar1@';

    var_dump(Password::isValid($password1));
    var_dump(Password::isValid($password2));
    var_dump(Password::isValid($password2, $username));

?>
/* OUTPUT*/
/var/www/html/controllers/HomeController.php:8:boolean false
/var/www/html/controllers/HomeController.php:9:boolean true
/var/www/html/controllers/HomeController.php:10:boolean false

贡献

  1. 分支存储库
  2. 创建描述性的分支名称
  3. 在您的分支中进行编辑
  4. 合并(变基)您的提交
  5. 创建拉取请求

许可证

本项目采用MIT许可证 - 详细信息请参阅LICENSE.md文件。