添加自定义的密码加密方式 - prinsss/blessing-skin-server GitHub Wiki
Blessing Skin 默认提供了 PHP_PASSWORD_HASH
、(SALTED2)MD5
、(SALTED2)SHA256
、(SALTED2)SHA512
、CrazyCrypt1
这几种加密方式,对于一般用户来说已经够了。
但是,如果你想要和某些程序进行用户数据对接的话,你可能需要添加一个自定义的密码加密方式。
注意,自定义密码加密方式需要你有一定的 PHP 编程基础。
以下是具体步骤:
进入皮肤站根目录下的 app/Services/Cipher
,可以看到所有可用的密码加密方式的代码都在这里,并且你在 .env
里填写的值就是这些代码的 文件名 & 类名。
➜ Cipher git:(master) $ tree
.
├── BaseCipher.php
├── CrazyCrypt1.php
├── EncryptInterface.php
├── MD5.php
├── PHP_PASSWORD_HASH.php
├── SALTED2MD5.php
├── SALTED2SHA256.php
├── SALTED2SHA512.php
├── SHA256.php
└── SHA512.php
0 directories, 10 files
现在我们新建一个文件 ExampleCipher.php
,内容如下:
<?php
namespace App\Services\Cipher;
// 注意,类名与文件名必须一致
// 否则 Blessing Skin 无法识别
class ExampleCipher extends BaseCipher
{
/**
* 根据密码明文生成其摘要并返回,用于登录验证或存储。
*
* @param string $value 用户密码的明文
* @param string $salt 盐,由 .env 中的 SALT 字段指定
* @return string
*/
public function hash($value, $salt = "")
{
// 这里放你自己的代码,这里仅作为示例
// 总之根据明文生成对应的密文就好了
// 不过一定要记得把密文 return 回去哦
// 警告:你不应该明文存储用户密码!
return sha1(md5($value + $salt) + $salt);
}
}
自定义的密码加密代码就放在这里,具体需求上面的注释里都写清楚了。
然后去 .env
把 PWD_METHOD
字段改成 ExampleCipher
(也就是上面的类名,必须大小写一致),你的自定义加密方式就生效了。
注意,切换密码加密方式之后,之前注册的所有用户都将无法登录!
你必须进行「重置密码」操作或者手动修改 users
数据表中的 password
字段。