jabarihunt / password
简单的密码类。
v1.0.1
2020-04-12 07:35 UTC
Requires
- php: >=5.4.0
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
-
将此存储库克隆到工作目录:
git clone git@github.com:jabarihunt/password .
-
在您的项目中包含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
贡献
- 分支存储库
- 创建描述性的分支名称
- 在您的分支中进行编辑
- 合并(变基)您的提交
- 创建拉取请求
许可证
本项目采用MIT许可证 - 详细信息请参阅LICENSE.md文件。