/** * 获取私钥加密签名 * * @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; }
拉卡拉支付回调验签
最新推荐文章于 2024-12-11 09:43:33 发布