This commit is contained in:
2024-04-02 14:52:30 +08:00
parent c5df43ce48
commit ddf8b1d49b

View File

@@ -7,6 +7,7 @@ class YopSignUtils
/** /**
* 签名生成算法 * 签名生成算法
*
* @param array $params API调用的请求参数集合的关联数组不包含sign参数 * @param array $params API调用的请求参数集合的关联数组不包含sign参数
* @param array $ignoreParamNames 忽略的参数数组 * @param array $ignoreParamNames 忽略的参数数组
* @param String $secret 密钥 * @param String $secret 密钥
@@ -19,8 +20,8 @@ class YopSignUtils
$requestparams = $params; $requestparams = $params;
ksort($requestparams); ksort($requestparams);
foreach ($requestparams as $k => $v) { foreach ($requestparams as $k => $v) {
if (!in_array($k, $ignoreParamNames)) { if (! in_array($k, $ignoreParamNames)) {
if (!($v === null)) { if (! ($v === null)) {
$str .= "$k$v"; $str .= "$k$v";
} }
} }
@@ -35,6 +36,7 @@ class YopSignUtils
/** /**
* 签名验证算法 * 签名验证算法
*
* @param array $result API调用的请求参数集合的关联数组不包含sign参数 * @param array $result API调用的请求参数集合的关联数组不包含sign参数
* @param String $secret 密钥 * @param String $secret 密钥
* @param String $algName 加密算法 * @param String $algName 加密算法
@@ -50,14 +52,13 @@ class YopSignUtils
} else { } else {
return false; return false;
} }
} }
public static function decrypt($source, $private_Key, $public_Key) public static function decrypt($source, $private_Key, $public_Key)
{ {
$private_key = "-----BEGIN RSA PRIVATE KEY-----\n". $private_key = "-----BEGIN RSA PRIVATE KEY-----\n".
wordwrap($private_Key, 64, "\n", true). wordwrap($private_Key, 64, "\n", true).
"\n-----END RSA PRIVATE KEY-----"; "\n-----END RSA PRIVATE KEY-----";
extension_loaded('openssl') or die('php需要openssl扩展支持'); extension_loaded('openssl') or die('php需要openssl扩展支持');
/* 提取私钥 */ /* 提取私钥 */
@@ -73,6 +74,7 @@ class YopSignUtils
$encryptedDataToBase64 = $args[1]; $encryptedDataToBase64 = $args[1];
$symmetricEncryptAlg = $args[2]; $symmetricEncryptAlg = $args[2];
$digestAlg = $args[3]; $digestAlg = $args[3];
//用私钥对随机密钥进行解密 //用私钥对随机密钥进行解密
openssl_private_decrypt(Base64Url::decode($encryptedRandomKeyToBase64), $randomKey, $privateKey); openssl_private_decrypt(Base64Url::decode($encryptedRandomKeyToBase64), $randomKey, $privateKey);
openssl_free_key($privateKey); openssl_free_key($privateKey);
@@ -82,11 +84,12 @@ class YopSignUtils
$signToBase64 = substr(strrchr($encryptedData, '$'), 1); $signToBase64 = substr(strrchr($encryptedData, '$'), 1);
$sourceData = substr($encryptedData, 0, strlen($encryptedData) - strlen($signToBase64) - 1); $sourceData = substr($encryptedData, 0, strlen($encryptedData) - strlen($signToBase64) - 1);
$public_key = "-----BEGIN PUBLIC KEY-----\n". $public_key = "-----BEGIN PUBLIC KEY-----\n".
wordwrap($public_Key, 64, "\n", true). wordwrap($public_Key, 64, "\n", true).
"\n-----END PUBLIC KEY-----"; "\n-----END PUBLIC KEY-----";
$publicKey = openssl_pkey_get_public($public_key); $publicKey = openssl_pkey_get_public($public_key);
$res = openssl_verify($sourceData, Base64Url::decode($signToBase64), $publicKey, $digestAlg); //验证 $res = openssl_verify($sourceData, Base64Url::decode($signToBase64), $publicKey, $digestAlg); //验证
openssl_free_key($publicKey); openssl_free_key($publicKey);
if ($res == 1) { if ($res == 1) {
return $sourceData; return $sourceData;
} else { } else {
@@ -97,8 +100,8 @@ class YopSignUtils
public static function signRsa($source, $private_Key) public static function signRsa($source, $private_Key)
{ {
$private_key = "-----BEGIN RSA PRIVATE KEY-----\n". $private_key = "-----BEGIN RSA PRIVATE KEY-----\n".
wordwrap($private_Key, 64, "\n", true). wordwrap($private_Key, 64, "\n", true).
"\n-----END RSA PRIVATE KEY-----"; "\n-----END RSA PRIVATE KEY-----";
extension_loaded('openssl') or die('php需要openssl扩展支持'); extension_loaded('openssl') or die('php需要openssl扩展支持');
/* 提取私钥 */ /* 提取私钥 */
$privateKey = openssl_get_privatekey($private_key); $privateKey = openssl_get_privatekey($private_key);
@@ -121,7 +124,6 @@ class YopSignUtils
$prikeyid = preg_replace("/(\r\n|\n|\r|\t)/i", '', $prikeyid); $prikeyid = preg_replace("/(\r\n|\n|\r|\t)/i", '', $prikeyid);
return $prikeyid; return $prikeyid;
} }
} }