public function sign(array $param, string $secret): string
{
unset($param['sign']);
if (!isset(
$param['member_id'],
$param['client_ip'],
$param['nonce_str'],
$param['out_trade_no'],
$param['time_start'],
$param['time_expire'],
$param['total_amount']
)) {
return '';
}
foreach ($param as $k => $v) {
if (!is_scalar($v) || '' === ($v = trim((string)$v))) {
unset($param[$k]);
}
}
ksort($param);
return sha1(md5(http_build_query($param)) . md5($secret));
}
public function verifyPassword(int $memberId, string $password): bool
{
// 密码必须使用 sha1 进行加密传递,sha1 长度为 40
if (strlen($password) !== 40) {
return false;
}
if (false === ($account = $this->findAccount($memberId))) {
return false;
}
return $this->encryptPassword($password, $account['salt']) === $account['password'];
}
public function encryptPassword(string $password, string$salt): string
{
return md5(md5($password) . $salt);
}