Hexadecimal Key: 42c4d34deb65fcdd
RSA Encrypted Key: G5xoQILbTRcHH0itPpEbKav0OgNrgHL6U6sxKO10O1Smjb6NqwRYWLmQt0bBtc0zaGtMNTvQyRoYzU1pxS2c5x6T1M84HNWHDmwbNzcVcwGB6z451Jc80I/inXyLAcQTS7v+un1HwgOMcVe4BrvQd1RbAeQOl0ET+X9XySJXc3xjwZtN/eOv+iysLpUaYmtvR4HFzGEQ5IyadCq1bqWv+dqixBphmo12yLf/D/BxUI5HXrybxytYV6FreVkBYxiyx8kIy7T0u7sKVEOUdIEWtLYgEq0+JEEUzYCo8IXVMaVye3uZ+IPrUff1ZwTJytAoaHQR9F28UsiUZwOE2shShg==
Plain Text Payload:
{"aPIReqRefNo":"YBAPIREQ050720268254334537","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}
Encrypted Payload: 4AlplbUriA5pPCFD6lpWC6wgSTj3M4hrSMJ2RWnGWDVIoboZxNIGJvTGQF2XW5DBp+lDOXBulL5mCU5JYpuEz80mBL85hvYG6RA+9ksmIu9xOYjvfAsNw2V+dOM+KDH18VOV8Kd68tZKQuurIJHrf1sGDGryB4HZHMuJMbSVEprcijqwxQyJMSTFTJq0bh9sfOXDuc/Zl5lTsxolEBZ9oBji+BygVSYwpDYJqad6UOgIGDeDDXo7QcF6WLWMtCGSiFlyEcGwB3OIeowI1PD+2pEHs2mAjhMJ16F6CcrPNItuGR0TTtgeG02gv7r62WHZ65woR8p80obxhvrDrYBt08JeiXBdjREFsAiDhwvByxc=
Decrypted Payload: {"aPIReqRefNo":"YBAPIREQ050720268254334537","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}
Decrypted Payloads:
SHA-512 Hash: 7706e9d5fafa8f936c00366f5754d54492d6939e9621473d3caf2c6d4e5800fae24567301594a054894711f348c8beff540e5c59331b8ef85343025f128da294
YBAPIREQ050720268254334537
{"aPIReqRefNo":"YBAPIREQ050720268254334537","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}
{ "X-IBM-Client-Id" : "ebd348f2e28c64fe5fa0a5e7b2586634", "X-IBM-Client-Secret": "2f30ec155df3d81530b301c9d1b6d8e2", "key":"G5xoQILbTRcHH0itPpEbKav0OgNrgHL6U6sxKO10O1Smjb6NqwRYWLmQt0bBtc0zaGtMNTvQyRoYzU1pxS2c5x6T1M84HNWHDmwbNzcVcwGB6z451Jc80I/inXyLAcQTS7v+un1HwgOMcVe4BrvQd1RbAeQOl0ET+X9XySJXc3xjwZtN/eOv+iysLpUaYmtvR4HFzGEQ5IyadCq1bqWv+dqixBphmo12yLf/D/BxUI5HXrybxytYV6FreVkBYxiyx8kIy7T0u7sKVEOUdIEWtLYgEq0+JEEUzYCo8IXVMaVye3uZ+IPrUff1ZwTJytAoaHQR9F28UsiUZwOE2shShg==" }
{"payload":"4AlplbUriA5pPCFD6lpWC6wgSTj3M4hrSMJ2RWnGWDVIoboZxNIGJvTGQF2XW5DBp+lDOXBulL5mCU5JYpuEz80mBL85hvYG6RA+9ksmIu9xOYjvfAsNw2V+dOM+KDH18VOV8Kd68tZKQuurIJHrf1sGDGryB4HZHMuJMbSVEprcijqwxQyJMSTFTJq0bh9sfOXDuc\/Zl5lTsxolEBZ9oBji+BygVSYwpDYJqad6UOgIGDeDDXo7QcF6WLWMtCGSiFlyEcGwB3OIeowI1PD+2pEHs2mAjhMJ16F6CcrPNItuGR0TTtgeG02gv7r62WHZ65woR8p80obxhvrDrYBt08JeiXBdjREFsAiDhwvByxc=","hashValue":"7706e9d5fafa8f936c00366f5754d54492d6939e9621473d3caf2c6d4e5800fae24567301594a054894711f348c8beff540e5c59331b8ef85343025f128da294"}
- 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
- ]);
- }
- }