password生成类
namespace wangqy\tcc\utils;
class Password
{
protected $key;
protected $version = '1.0';
public function __construct()
{
$this->key = config('keys.password_key', 'password_key');
}
/**
* 比较密码
*
* @param string $password 参数中的密码
* @param string $dbPassword 数据库中的密码
* @param array $extra 扩展参数
*
* @return bool
*/
public function compare($password, $dbPassword, $extra = [])
{
return $this->create($password, $extra) === $dbPassword;
}
/**
* 生成密码
*
* @param string $password 密码
* @param array $extra 扩展参数
*
* @return string
*/
public function create($password, $extra = [])
{
$data = [
'key' => $this->key,
'password' => $password,
'version' => $this->version,
];
if ($extra) {
$data['extra'] = $extra;
}
return md5(md5($this->key.base64_encode(json_encode($data))).md5(base64_encode($this->key)));
}
/**
* @param string $key 加密秘钥
*
* @return $this
*/
public function setKey(string $key)
{
$this->key = $key;
return $this;
}
}
公共函数
if (!function_exists('create_password')) {
/**
* 生成密码
*
* @param $password
* @param null $key
*
* @return string
*/
function create_password($password, $key = null)
{
/** @var Password $passwordService */
$passwordService = app()->make(Password::class);
if ($key) {
$passwordService->setKey($key);
}
return $passwordService->create($password);
}
}
if (!function_exists('compare_password')) {
/**
* 比较密码
*
* @param $password
* @param $dbPassword
* @param null $key
*
* @return bool
*/
function compare_password($password, $dbPassword, $key = null)
{
/** @var Password $passwordService */
$passwordService = app()->make(Password::class);
if ($key) {
$passwordService->setKey($key);
}
return $passwordService->compare($password, $dbPassword);
}
}
1、可以根据version控制不同版本的密码生成,如果需要可以自己调整。
2、根据传入的key来调控不同场景的密码生成
发布时间 : 2023-02-28,阅读量:1041
本文链接:
https://upwqy.com/details/52.html