/*** 获取私钥加密签名** @param $toSign 待签名字符串* @param $privateKey 私钥* @return string*/
public static function genSign($toSign, $privateKey)
{$privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" .wordwrap($privateKey, 64, "\n", true) ."\n-----END RSA PRIVATE KEY-----";$key = openssl_get_privatekey($privateKey);openssl_sign($toSign, $signature, $key);openssl_free_key($key);$sign = base64_encode($signature);return $sign;}/*** 获取待签名字符** @param $data* @return string*/
public static function getSignStr($data)
{//按字典序排序参数ksort($data);$sign = '';foreach ($data as $k => $v) {$sign .= $k . "=" . $v . "&";}$sign = rtrim($sign, '&');return $sign;
}/*** 公钥解密签名验证** @param $data 待签名字符串* @param $sign 签名* @param $pubKey 公钥* @return bool*/
public static function verifySign($data, $sign, $pubKey)
{$sign = base64_decode($sign);$pubKey = "-----BEGIN PUBLIC KEY-----\n" .wordwrap($pubKey, 64, "\n", true) ."\n-----END PUBLIC KEY-----";$key = openssl_pkey_get_public($pubKey);$result = openssl_verify($data, $sign, $key, OPENSSL_ALGO_SHA1) === 1;return $result;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!