|
@@ -3,6 +3,7 @@
|
|
namespace app\api\controller;
|
|
namespace app\api\controller;
|
|
|
|
|
|
use app\common\controller\Api;
|
|
use app\common\controller\Api;
|
|
|
|
+use app\common\library\RsaUtil;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 示例接口
|
|
* 示例接口
|
|
@@ -90,7 +91,12 @@ class Demo extends Api
|
|
'remark7' => '',*/
|
|
'remark7' => '',*/
|
|
];
|
|
];
|
|
|
|
|
|
- $sign = $this->sign(base64_encode(json_encode($biz_content)));
|
|
|
|
|
|
+ $public_key = APP_PATH.'/common/certs/icbc/public_key.pem';
|
|
|
|
+ $private_key = APP_PATH.'/common/certs/icbc/private_key.pem';
|
|
|
|
+ $rsautil = new RsaUtil($public_key,$private_key);
|
|
|
|
+
|
|
|
|
+ $sign = $rsautil->publicEncrypt(json_encode($biz_content));
|
|
|
|
+dump($sign);
|
|
|
|
|
|
$data = [
|
|
$data = [
|
|
'app_id' => '10000000000004096993',
|
|
'app_id' => '10000000000004096993',
|
|
@@ -106,100 +112,8 @@ class Demo extends Api
|
|
];
|
|
];
|
|
|
|
|
|
$rs = curl_post($url, json_encode($data, JSON_UNESCAPED_UNICODE));
|
|
$rs = curl_post($url, json_encode($data, JSON_UNESCAPED_UNICODE));
|
|
- dump($rs);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private function sign($data)
|
|
|
|
- {
|
|
|
|
- $private_key = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR8/ZvKPAdZzsyvapySvztQm56s1N59ynKMOWpUbK4c5MNWMl+q3dvsp+UiSAx2TAeGkYfW3W6nO/3Y0hAZki99fmuzpPujEeHhs79HNwGZYQjN71Vck2JeflTq8jpL+9/up0Kz2nbwtZDMKTTEgbfNeO24gV1bmvD2kQ9j66RIyuXSDwQbVbQfl6LiqKoJm3rbtsbwX1Ytc0/Szslyor1VdPZWnHDMm3m78Hqu7X3vL6K7fAW/4FVbeKV7vWjvyiTQfETmuADqMdsqV5YeqUZWE/Dnzg+6JV/3L9nJ8f+/mPlh8k1h1oW035GrADKFKf1M2ujKKeHICnj7qKCdBeNAgMBAAECggEAHkh+U2YtHAy1Tbvox7ojbJ8iCTd4FJBiDV/D5zPaX0crtdM8S5oMOBLZ5ZnmIjGsODK/ZfY2ITg62huxfBs88J0+5zRZoV9d4BLqk74PMQyTNDN2h2omCGZUgzXbg/a8PMZdm0aZ8k0k4+AN8vWEk3+89c9Dzq/QkFyTWCqdz+Mp9NkcOjA255kj5/D1q9Zj0x9VcmKg3oTtrKL/dkspUxVaMKXcpo6J4AszC05tT3N0SNLhcq51I6B9QdbYsYCkP9whPNYIl/y4dN4QnNEivQzA5/ltr5DDQZc7Xke1+SpJN+ylBOBJ8yvNoDnuxx0xEWuNJ5bUzyri/DNjZRKNQQKBgQDKkxn5R4Q3rChI/KVIXHMecTs9fXN5pbnA8UKU6ZeTl+wHffxwRieHZJJp1nDcQ5i8YXCtqEJcJGFn3T0rEjVCJ/RVHclFO+TjYaK9HtyNJLPrvKmAzjCzV1yPfe4qmpgJddzZI7Vii2uFgklixvhkoY74hwSJtvLPTO0p0xrYdQKBgQC4cgfpCMLYlaHQGz+dAEf4IewQpwBGn7XShCpiXGFciGZZEIzvJMzXP7yo8pDMHQbB4kQsTRRG2fcdHGWI5VQGHPqG5O0tUueKGUlSg7j8Y/Pp8ZrBGSrlilAf17I/u9MC7Xe2ZRVGNgPDYAyjMEGmClI0n2+aN6b4CFVBjYmfuQKBgEKO9KDIE7QrF41rnW7aGWTuNVWty2wzvIWdf4/n9EqlRwLrLS9CjahZrhWiRLDKcPusVFZqi2s09OAoe/mT4PXcpNX2lHPwCvN+1/allje10HvrIBJXLP8v/BSVftR2uO+azzZ1GhrHzksulKgk0eZWguA7lI0fFEZycxYj65UlAoGAD9p1RZlkLfuGgf2llRgOF4zK3o+MHYXiuep0PioUkECFE4ixpGh0Vtf6nkbjHTgteYK6O1iQsppPfCgRrheQBkp9WhTZMfkbP6p2u+nof4ET2PrUQ16naj1eL655erLpKypADORZVMSVxDhAPdKLAfuHH1DI5ed8qXsF4PGKb7kCgYEAm/d+daT6YsbHDZlJ/J9Q8rRkKmiqj43NGQSHKg6Z6BEDibm8wRmj3Itu1N6XVChuaH+ekJzvUnZ/q1nyYzGvy6bOHYn3ziF9aH7wuhcRZ4qARmKDnzTBLg2QXBK1+400O3LJ+sAH/yuH/Y4hzRE6YMxBQpdYfnlJcIFVimAsT1w=';
|
|
|
|
- $public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp2mmCWIxUMx32dEfyOTgslQi0nf7i0tPE5PQbmfpttRGzEPJe5hfMThLlcQ0eh92SeheaCdVMk9OzF5zZiO++fofzr2dRn5fAUAXLVkkOGyQ3x9YR2yE7VisK7RxckE59O9lX1w9iWuSSuacUCtFfXLxap8bfW/aEBLNxmBu3x6Ld5vMBztqn2qTYVZqPN9TBVaJvbTqFty6O+wa1G43YqgX1O5eBiLuVoTijlNm9dGDx3tg52af/6X8N8W6yBBAo+k9/D9oDU8lYdIm6d2D1HEOfBrHcdNTDtMR620Fml1JAsvjD+ku5sEXKm9pb8iRZuqRhjE7BVm46feG8YOz2wIDAQAB';
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- $public_key = "-----BEGIN PUBLIC KEY-----" .PHP_EOL.
|
|
|
|
- wordwrap($public_key, 64, PHP_EOL, true) .
|
|
|
|
- PHP_EOL."-----END PUBLIC KEY-----";
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- dump($public_key);
|
|
|
|
- openssl_public_encrypt($data,$encrypted, $public_key);
|
|
|
|
- echo openssl_error_string();
|
|
|
|
- return base64_encode($encrypted);
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public function test4(){
|
|
|
|
- // 演示开始
|
|
|
|
- echo "=== RSA加密解密演示 ===\n\n";
|
|
|
|
-
|
|
|
|
-// 1. 生成密钥对
|
|
|
|
- echo "1. 生成RSA密钥对...\n";
|
|
|
|
- $keys = $this->generateRsaKeys();
|
|
|
|
- $privateKey = $keys['private_key'];
|
|
|
|
- $publicKey = $keys['public_key'];
|
|
|
|
-
|
|
|
|
- echo "公钥:\n" . $publicKey . "\n";
|
|
|
|
- echo "私钥:\n" . $privateKey . "\n\n";
|
|
|
|
-
|
|
|
|
-// 2. 要加密的原始数据
|
|
|
|
- $originalData = "这是一个使用RSA加密的测试消息。Hello RSA! 123456";
|
|
|
|
- echo "2. 原始数据:\n" . $originalData . "\n\n";
|
|
|
|
-
|
|
|
|
-// 3. 使用公钥加密
|
|
|
|
- echo "3. 使用公钥加密数据...\n";
|
|
|
|
- $encryptedData = $this->rsaEncrypt($originalData, $publicKey);
|
|
|
|
- echo "加密后的数据(Base64):\n" . $encryptedData . "\n\n";
|
|
|
|
-
|
|
|
|
-// 4. 使用私钥解密
|
|
|
|
- echo "4. 使用私钥解密数据...\n";
|
|
|
|
- $decryptedData = $this->rsaDecrypt($encryptedData, $privateKey);
|
|
|
|
- echo "解密后的数据:\n" . $decryptedData . "\n\n";
|
|
|
|
-
|
|
|
|
-// 5. 验证结果
|
|
|
|
- echo "5. 验证结果:\n";
|
|
|
|
- if ($originalData === $decryptedData) {
|
|
|
|
- echo "✓ 加密解密成功,原始数据与解密数据一致!\n";
|
|
|
|
- } else {
|
|
|
|
- echo "✗ 加密解密失败,数据不一致!\n";
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- echo "\n=== 演示结束 ===\n";
|
|
|
|
|
|
+ //dump($rs);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- function generateRsaKeys($keySize = 2048) {
|
|
|
|
- $config = array(
|
|
|
|
- "digest_alg" => "sha512",
|
|
|
|
- "private_key_bits" => $keySize,
|
|
|
|
- "private_key_type" => OPENSSL_KEYTYPE_RSA,
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- // 生成密钥对
|
|
|
|
- $res = openssl_pkey_new($config);
|
|
|
|
-
|
|
|
|
- // 获取私钥
|
|
|
|
- openssl_pkey_export($res, $privateKey);
|
|
|
|
-
|
|
|
|
- // 获取公钥
|
|
|
|
- $publicKey = openssl_pkey_get_details($res);
|
|
|
|
- $publicKey = $publicKey["key"];
|
|
|
|
-
|
|
|
|
- return array(
|
|
|
|
- 'private_key' => $privateKey,
|
|
|
|
- 'public_key' => $publicKey
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-// RSA加密
|
|
|
|
- function rsaEncrypt($data, $publicKey) {
|
|
|
|
- openssl_public_encrypt($data, $encrypted, $publicKey);
|
|
|
|
- return base64_encode($encrypted);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-// RSA解密
|
|
|
|
- function rsaDecrypt($encryptedData, $privateKey) {
|
|
|
|
- $encryptedData = base64_decode($encryptedData);
|
|
|
|
- openssl_private_decrypt($encryptedData, $decrypted, $privateKey);
|
|
|
|
- return $decrypted;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
}
|
|
}
|