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
PHP教程 - EOF(heredoc) 使用说明 阿里云负载均衡-宝塔多站点