Hexadecimal Key: cadbc48d55536287
RSA Encrypted Key: nM36Cw25sA/UN7tlJzF5GF9sPIUK9uK9CQ38wLiU+q2j0/yk7FbsgqwCYHASENcElqpuLzU8HUwVELzBJPB9MxkJ78m/YUu+f73XAA9NeFvrawWh2G0iQl+Dempu29q4fBopa80c2wAWJHzHnNX14nyq3gh3EmsAsTquB2icz3y6EGbAgt5QaiD/zUU9bABvuVSBoNntieAjY2tcZeCw9QuNznRqcJyVWD/eJLIoL8l+ZsD117Q/z69mbuV81BsTwnctKDsoRjnwZUYbDdfYgBCheYw2q9ZPNjHs6k52pTDAx5xXeRSp/iilYSH8GJAhiNn1qjOJRhA23qpQI3Crog==
Plain Text Payload:
{"aPIReqRefNo":"YBAPIREQ150420269581805890","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}
Encrypted Payload: +R9c+N1fchApyM0Z0vtICARuoqkB847tX1D644JAnXrFGqD+VbNvk/a7pJzRpaZAfdVhEmRjTmMNXbSOX4yBtF549RDvZoe6To04j95b72Vvgj4aWQ91agWlmnGVpkyuLklhlX9E02LvvTI2okOwcBeXltTPk9+HhZCfojR2DXWBonHCXIrPx5Npm21sm2bfpRdxC4WfhyheD5CdNKprSeigMgUA9z/6si8Y07st1GltfYpqgC19g2tU2bqLISLH71FqMVot5hylJNVx+IgPjiKyMEMOnzMSQjZb1oNx9URv+vx5wsNLC6ctn9VVdRDJ9fuZ6jKEErjdQ/emnNwP5r5N85RBsThTSbKyCEP/4i8=
Decrypted Payload: {"aPIReqRefNo":"YBAPIREQ150420269581805890","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}
Decrypted Payloads:
SHA-512 Hash: ab03acbd3652b67ed0952700ca2e4113872835e1e6d0ba3ded2ebdde5ed51818efd8f1847b4750275eb7a5d37586b04c9d2f9ce65a7668af840f51a9b6ca50b0
YBAPIREQ150420269581805890
{"aPIReqRefNo":"YBAPIREQ150420269581805890","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}
{ "X-IBM-Client-Id" : "ebd348f2e28c64fe5fa0a5e7b2586634", "X-IBM-Client-Secret": "2f30ec155df3d81530b301c9d1b6d8e2", "key":"nM36Cw25sA/UN7tlJzF5GF9sPIUK9uK9CQ38wLiU+q2j0/yk7FbsgqwCYHASENcElqpuLzU8HUwVELzBJPB9MxkJ78m/YUu+f73XAA9NeFvrawWh2G0iQl+Dempu29q4fBopa80c2wAWJHzHnNX14nyq3gh3EmsAsTquB2icz3y6EGbAgt5QaiD/zUU9bABvuVSBoNntieAjY2tcZeCw9QuNznRqcJyVWD/eJLIoL8l+ZsD117Q/z69mbuV81BsTwnctKDsoRjnwZUYbDdfYgBCheYw2q9ZPNjHs6k52pTDAx5xXeRSp/iilYSH8GJAhiNn1qjOJRhA23qpQI3Crog==" }
{"payload":"+R9c+N1fchApyM0Z0vtICARuoqkB847tX1D644JAnXrFGqD+VbNvk\/a7pJzRpaZAfdVhEmRjTmMNXbSOX4yBtF549RDvZoe6To04j95b72Vvgj4aWQ91agWlmnGVpkyuLklhlX9E02LvvTI2okOwcBeXltTPk9+HhZCfojR2DXWBonHCXIrPx5Npm21sm2bfpRdxC4WfhyheD5CdNKprSeigMgUA9z\/6si8Y07st1GltfYpqgC19g2tU2bqLISLH71FqMVot5hylJNVx+IgPjiKyMEMOnzMSQjZb1oNx9URv+vx5wsNLC6ctn9VVdRDJ9fuZ6jKEErjdQ\/emnNwP5r5N85RBsThTSbKyCEP\/4i8=","hashValue":"ab03acbd3652b67ed0952700ca2e4113872835e1e6d0ba3ded2ebdde5ed51818efd8f1847b4750275eb7a5d37586b04c9d2f9ce65a7668af840f51a9b6ca50b0"}
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use phpseclib3\Crypt\RSA;
- use phpseclib3\Crypt\AES;
- use Illuminate\Support\Str;
- use Illuminate\Support\Facades\Http;
- class TestController extends Controller
- {
- public function encryptPayload(Request $request)
- {
- $input = $request->all();
- $aPIReqRefNo = 'YBAPIREQ' . date('dmY') . random_int(1000000000, 9999999999);
- function generateHexSalt($length = 16)
- {
- return bin2hex(random_bytes($length / 2));
- }
- function generateAESKey($salt)
- {
- return hash('sha256', $salt, true);
- }
- function encryptPayloadAES($payload, $key)
- {
- $aes = new AES('cbc');
- $aes->setKey($key);
- $aes->setIV(random_bytes(16));
- return $aes->encrypt($payload);
- }
- function extractPublicKeyFromCertificate($certificate)
- {
- $certData = openssl_x509_read($certificate);
- $publicKeyDetails = openssl_pkey_get_details(openssl_pkey_get_public($certData));
- return $publicKeyDetails['key'];
- }
- function encryptWithRSA($data, $publicKey)
- {
- $rsa = RSA::loadPublicKey($publicKey);
- return $rsa->encrypt($data);
- }
- function base64Encode($data)
- {
- return base64_encode($data);
- }
- $certificate = <code><<<</code>EOD
- -----BEGIN CERTIFICATE-----
- MIIGpjCCBY6gAwIBAgIQD5azSFw0HdzToy3O9u9jhDANBgkqhkiG9w0BAQsFADBE
- MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMR4wHAYDVQQDExVE
- aWdpQ2VydCBFViBSU0EgQ0EgRzIwHhcNMjAwNzA4MDAwMDAwWhcNMjEwNjE2MTIw
- MDAwWjCB4DEaMBgGA1UEDwwRR292ZXJubWVudCBFbnRpdHkxEzARBgsrBgEEAYI3
- PAIBAxMCSU4xGjAYBgNVBAUTEUdvdmVybm1lbnQgRW50aXR5MQswCQYDVQQGEwJJ
- TjEUMBIGA1UECBMLTWFoYXJhc2h0cmExDzANBgNVBAcTBk11bWJhaTEcMBoGA1UE
- ChMTU1RBVEUgQkFOSyBPRiBJTkRJQTEkMCIGA1UECxMbSU5URVJORVQgQkFOS0lO
- RyBERVBBUlRNRU5UMRkwFwYDVQQDExB5b25vYnVzaW5lc3Muc2JpMIIBIjANBgkq
- hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAOZYxBsK/5187m1dNJZsCQLG9cSre62
- VWjDvgtJnXuVLIs5NM2d3c/iks0ILK+Dx24HLqhXZ/9xm23ziexsaf1nqXqiMU5W
- n5Y2hsWwEp3I0Pa9mNVp/K2zeliX6aiO/3FldI0UodJi8mJXu8lTdFfv6LKPExJp
- +nBNKCsnBFHDBjBUUxya4AEXFqiIBUIkXSeKZ6kibmLMa8CioVSfzWdPmklNQJ8R
- /vVo5tg+owV55FP+Wnl0BcMKm4aG+QXiBqv3rpKHmDohJ4j9DOEz1C9JayP4Rdpz
- Ir3dvTwpyxZG3xwBi0a9m1QNRp9Smk5ayMMGOsfQMO4e9hlztZopgwIDAQABo4IC
- 9TCCAvEwHwYDVR0jBBgwFoAUak5Qv5honVt7IHXUWQF5SGaSMgYwHQYDVR0OBBYE
- FF3BGmz7C6gCe0WLzlMgv2UWHu3cMDEGA1UdEQQqMCiCEHlvbm9idXNpbmVzcy5z
- YmmCFHd3dy55b25vYnVzaW5lc3Muc2JpMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUE
- FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwdQYDVR0fBG4wbDA0oDKgMIYuaHR0cDov
- L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0RVZSU0FDQUcyLmNybDA0oDKgMIYu
- aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0RVZSU0FDQUcyLmNybDBL
- BgNVHSAERDBCMDcGCWCGSAGG/WwCATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3
- dy5kaWdpY2VydC5jb20vQ1BTMAcGBWeBDAEBMHMGCCsGAQUFBwEBBGcwZTAkBggr
- BgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMD0GCCsGAQUFBzAChjFo
- dHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRFVlJTQUNBRzIuY3J0
- MAwGA1UdEwEB/wQCMAAwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgD2XJQv0Xcw
- IhRUGAgwlFaO400TGTO/3wwvIAvMTvFk4wAAAXMuy1fbAAAEAwBHMEUCIQDbdqFJ
- fLvbZ0gkRmJf6e8YWaII5sQdasLSWkhljDNzMwIgQ6C2LDPGSQzF3GhZ2Zk6w6Mm
- EIBHRkjsBYvSYpNhlvcAdgBc3EOS/uarRUSxXprUVuYQN/vV+kfcoXOUsl7m9scO
- ygAAAXMuy1gKAAAEAwBHMEUCIQDb9zstnk4m6mstTBBRMG4ajqAHMfUbpITWxrDE
- xA6nfwIgRiPFMpiAMQO1DgSzxZJAhEduSP/vUI5axwoWm2ROpwswDQYJKoZIhvcN
- AQELBQADggEBADAvVutwG+yglgUfZhb18kanKPTxoCAw6MI+a29sDPY/+O5JG8Lh
- lYRmN3vqQfeswCFfTdk25KtjSzqSRHAZ/syrvLFOwcxjXMzf0Rh7rz/f0hw0437v
- vlDPgCDZo7Cp8RO9eZ5cy8ybyRT/iLKXqoI0c1dp4kMa1/wHhJFKBrnhYRHRP/Fa
- 3k8sqzDiKrNawuiTzkB3FrKVWUlc01/HzrViO2Gj/U7n0YRRQNMPwkPBbmPYDmM5
- VfAIs3yKLWZyjeqZVaWaui0KhZH0EQInRU22WNM0qyMKyC3YfvrpSoEBRLDUIrqc
- 6i62SGMFi+YzpcHrstaQrjLw+cnfVla83Bk=
- -----END CERTIFICATE-----
- EOD;
- $publicKey = extractPublicKeyFromCertificate($certificate);
- $salt = generateHexSalt();
- $aesKey = generateAESKey($salt);
- $payload = '{
- "aPIReqRefNo":"' . $aPIReqRefNo . '",
- "corporateID":"ABC12345678",
- "corpSecParams":"je2Wu3lGHtdTgSNniehbw/dCiY/+dA3X+4/B8wxHAAJCM4CdQXiXuQRY5FzMwgA7n8Ki+zmJbYrIg14KEeGg6jBrW4SDd9Awkwp9RwNskimION8dW3oDoD5KbqEfkoB55tVOK8BVO/1I7cXOeX1XAwyGHp65NM/Wb14Of8UtGtV+ZFVD1EX7A0SOx8hpEgPCKArkZRhokaXgR7+oSici59t/bQvNy+3iIhfO5mZYIr2KtdEDh8CdYZjjUZAqRlTo5dzrqVSi2PuYsgTo5/PXvY2UWA0duZrJG2+XSUJvFxDEHI97MIz7IQnn2uRnOBlfZeeNkTj2yn1CHqqjE3j4Xw==",
- "salt":"' . $salt . '"
- }';
- $compressedPayload = gzcompress($payload);
- $encryptedPayload = encryptPayloadAES($compressedPayload, $aesKey);
- try {
- $encryptedKey = encryptWithRSA(hex2bin($salt), $publicKey);
- } catch (Exception $e) {
- die('RSA Encryption Error: ' . $e->getMessage());
- }
- $base64EncodedKey = base64Encode($encryptedKey);
- $base64EncodedPayload = base64Encode($encryptedPayload);
- $hashedPayload = base64Encode(hash('sha512', $base64EncodedPayload, true));
- $data = '{
- "payload" : "' . $base64EncodedPayload . '",
- "hashValue" : "' . $hashedPayload . '"
- }';
- $secretId = '2f30ec155df3d81530b301c9d1b6d8e2';
- $ClientId = 'ebd348f2e28c64fe5fa0a5e7b2586634';
- $headers = [
- 'X-IBM-Client-Id' => $ClientId,
- 'X-IBM-Client-Secret' => $secretId,
- 'key' => $base64EncodedKey,
- ];
- $response = Http::withHeaders($headers)
- ->post('https://uatapibanking.yonobusiness.sbi/erpuat/uat/corp/cinb/authenticationService', [
- 'payload' => $base64EncodedPayload,
- 'hashValue' => $hashedPayload
- ]);
- }
- }