Tagih.id

AES-256-CBC Encryption

Enkripsi AES-256-CBC merupakan metode enkripsi simetris yang menggunakan algoritma AES (Advanced Encryption Standard) dengan panjang kunci 256-bit (32 byte) dan mode operasi CBC (Cipher Block Chaining). Penggunaan enkripsi AES-256-CBC untuk mengamankan data agar informasi yang disampaikan tidak dapat dibaca secara langsung. Sebelum melakukan enkripsi, pastikan Anda sudah menerima atau mengetahui Key dan IV yang akan digunakan.

Berikut ini ketentuan untuk enkripsi yang digunakan:

openssl_encrypt($plainString, ‘AES-256-CBC’, $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);

Parameter Enkripsi AES-256-CBC

Nama Keterangan
Encryption
AES 256
Mode
CBC
Key
32 bytes.

Diberikan oleh tim Espay.
IV
16 bytes.

Diberikan oleh tim Espay.
Output
Base64

Langkah-Langkah Enkripsi

Berikut ini merupakan langkah-langkah untuk enkripsi data menggunakan AES-256-CBC:

1. Siapkan data (plain text) yang akan dienkripsi

$plainString = ‘SGWYESSISHOP’;

2. Siapkan Key dan IV

$_key = ’45bfba7eb46a6007d49ca55a3738aae0′;
$_iv = ‘acc6d0f5aa29120a’;

3. Tambahkan padding (zero padding)

Dalam algoritma AES 256 CBC, data harus memiliki panjang kelipatan 16 byte.

Sebelum padding:

string(12) ‘SGWYESSISHOP’

Setelah padding:

String menjadi 16 byte: ‘SGWYESSISHOP’ + 4 null byte (\0).

String secara visual tetap terlihat sama, namun panjangnya berubah menjadi 16 byte karena penambahan 4 karakter null (\0).

⚠️ Padding ini dilakukan secara otomatis dalam kode menggunakan fungsi padding.

4. Lakukan Enkripsi

Lakukan enkripsi menggunakan format enkripsi sebagai berikut:
openssl_encrypt($plainString, ‘AES-256-CBC’, $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);

5. Encode hasil enkripsi menggunakan base64

plainString yang sudah dienkripsi selanjutnya dilakukan encode menggunakan base64.

7ehJDLKEnDvhoTaI0Ao3Fg==














Enkripsi - PHP

// Encryption function
function encryptData($data, $key, $iv) {
    $paddedData = padZero($data); // Pastikan data dipadding
    return openssl_encrypt($paddedData, 'AES-256-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
}

// Decryption function
function decryptData($encryptedData, $key, $iv) {
    $decodedData = base64_decode($encryptedData);
    return rtrim(openssl_decrypt($decodedData, 'AES-256-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv), "\0");
}

// Utility for padding
function padZero($data) {
    $len = 16;
    $padLength = $len - (strlen($data) % $len);
    return $data . str_repeat("\0", $padLength);
}
           


Contoh Permintaan - Sebelum Enkripsi

POST /rest/tagihid/sendbillingdigital HTTP/1.1
Host: sandbox-api.espay.id
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Accept: */*

rq_uuid=SGWYESSISHOP973962&
rq_datetime=2025-06-30 08:31:06&
signature=a50e23f466757dbe328e7057a39ce41679135b64d7a40a5b6348b09b2add3d98&
sender_id=SGWYESSISHOP&
comm_code=SGWYESSISHOP&
ccy=IDR&
invoices={
    "1221-31013.SH_2107_00099.F": {
        "member_code": "1221-31013",
        "member_name": "Tambiluk Serang",
        "member_email": "[email protected]",
        "comm_code": "SGWYESSISHOP",
        "reference_number": "F",
        "amount": 20000,
        "due_date": "2018-03-22",
        "issue_date": "2018-03-22"
    },
    "1221-31013.SH_2107_00099.N": {
        "member_code": "1221-31013",
        "member_name": "Tambiluk Serang",
        "member_email": "[email protected]",
        "comm_code": "SGWYESSISHOP",
        "reference_number": "N",
        "amount": 150000,
        "due_date": "2018-03-22",
        "issue_date": "2018-03-22"
    }
}&
total_invoices=2
           


Contoh Permintaan - Setelah Enkripsi

POST /rest/tagihid/sendbillingdigital HTTP/1.1
Host: sandbox-api.espay.id
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Accept: */*

rq_uuid=SGWYESSISHOP973962&
rq_datetime=2025-06-30 08:31:06&
signature=a50e23f466757dbe328e7057a39ce41679135b64d7a40a5b6348b09b2add3d98&
sender_id=SGWYESSISHOP&
comm_code=7ehJDLKEnDvhoTaI0Ao3Fg==&
ccy=XAgDOyFSyCxclKSInvWVcw==&
invoices=AKxBlnttnPYeN7Sgxyx4nnKX8TdReEucJox4i7poIizxAvfqodP5raJ4aplvOdFM4W2cVtUrmXaxYYUXEvHOoYRjTME0IChs1Ihm3FdB148Ef8Z+JMR2XZqbw338vpNtlR6tShTs1bFfERYvDyo1Epf9WRlTanU79K4Ri+OALy73QpPxZmfc1e+vmq0JbHt10K63x4qbcWuQDPAxwN6klbmAzByCg8tRU3hDPtLOUrhUrvrFmDBvPGbotHQkaOPXqSyqTlvMOxOgA0i4T0aGcdWp0pjv1wSNI0m4IUTJmCT15Vhy88vyX5Wy8BtctN6LnbFRd4eD3rsCHwxUkldXDPWIfu1bbt70kDGT9Ij5gZhIyoaeaVkDnKznEPFjGwhe/wfg24g9Rjkv21FQJiI6VvNV1pxTmvLOn63t9KGfQgGu/WJSrTe6AyqjsZiYdMqA/5pLR0dsG5RSC23NhLMFmVzuYujxAgmlRL5k5260oaCZ1Ps0RbD05VMXXDePMA8ZAIGVEiiMLbek3IN9hGlig26xJM2At1m6fesQlhhnOqtlXCDRSEsLkYqsIkA6sOr9DGLJcRE6mjK12GB6RUkfRZg73/lMvQ7WjjqQBtukk04sOWPUvxiCbMA75c7FbWDrgWF1yoYFuX6DZHrWzZgDmA==&
total_invoices=I3QGPJlhxrj9P2wjsQw/Bw==
           
Scroll to Top