Enkripsi String dengan AES di C++
AES (Advanced Encryption Standard) merupakan algoritma enkripsi simetris yang kuat dan banyak digunakan untuk mengamankan data sensitif. Pada artikel ini, kita akan membahas cara mengenkripsi string menggunakan AES di C++.
Persiapan
Pertama, kita perlu menyertakan library yang diperlukan untuk menggunakan AES di C++. Library yang umum digunakan adalah OpenSSL. Pastikan library OpenSSL sudah terinstal di sistem Anda. Berikut adalah langkah-langkah dasar untuk menginstal OpenSSL di Linux:
- Install OpenSSL:
sudo apt-get update
sudo apt-get install libssl-dev
Kode Program
Berikut contoh kode C++ untuk mengenkripsi string dengan AES:
#include
#include
#include
#include
#include
using namespace std;
// Fungsi untuk mengenkripsi string dengan AES
string encryptAES(const string& plaintext, const string& key, const string& iv) {
// Generate kunci dan vektor inisialisasi (IV)
unsigned char key_bytes[32] = {0};
unsigned char iv_bytes[16] = {0};
memcpy(key_bytes, key.c_str(), key.length());
memcpy(iv_bytes, iv.c_str(), iv.length());
// Inisialisasi konteks AES
AES_KEY aes_key;
AES_set_encrypt_key(key_bytes, 128, &aes_key); // Kunci 128 bit
// Alokasi memori untuk ciphertext
int ciphertext_len = plaintext.length() + AES_BLOCK_SIZE;
unsigned char* ciphertext = new unsigned char[ciphertext_len];
// Enkripsi string
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX_init(&ctx);
EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key_bytes, iv_bytes);
EVP_EncryptUpdate(&ctx, ciphertext, &ciphertext_len, (unsigned char*)plaintext.c_str(), plaintext.length());
EVP_EncryptFinal_ex(&ctx, ciphertext + ciphertext_len, &ciphertext_len);
EVP_CIPHER_CTX_cleanup(&ctx);
// Konversi ciphertext ke string
string encrypted_text(reinterpret_cast(ciphertext), ciphertext_len);
delete[] ciphertext;
return encrypted_text;
}
int main() {
// String yang ingin dienkripsi
string plaintext = "Ini adalah teks rahasia.";
// Kunci AES (16 byte)
string key = "your_secret_key";
// Vektor Inisialisasi (IV) (16 byte)
string iv = "your_initialization_vector";
// Enkripsi string
string ciphertext = encryptAES(plaintext, key, iv);
// Cetak hasil enkripsi
cout << "Ciphertext: " << ciphertext << endl;
return 0;
}
Penjelasan Kode
Kode di atas melakukan hal berikut:
- Memasukkan library: Memasukkan library yang diperlukan, termasuk OpenSSL.
- Mendefinisikan fungsi
encryptAES
: Fungsi ini menerima plaintext, kunci, dan IV sebagai input. - Menghasilkan kunci dan IV: Kunci dan IV dikonversi dari string ke array byte.
- Menginisialisasi konteks AES: Konteks AES diinisialisasi dengan kunci yang diberikan.
- Mengenkripsi string: Fungsi
EVP_EncryptUpdate
digunakan untuk mengenkripsi string. - Mengkonversi ciphertext: Ciphertext diubah menjadi string dan dikembalikan sebagai hasil.
Dekripsi
Anda dapat mendekripsi string yang telah dienkripsi dengan AES menggunakan langkah-langkah yang sama dengan menggunakan fungsi EVP_DecryptUpdate
dari OpenSSL. Pastikan kunci dan IV yang digunakan untuk dekripsi sama dengan yang digunakan saat enkripsi.
Kesimpulan
Enkripsi string menggunakan AES di C++ dapat dilakukan dengan menggunakan library OpenSSL. Kode di atas memberikan contoh sederhana untuk mengenkripsi string. Anda dapat memodifikasi kode ini sesuai dengan kebutuhan Anda. Ingatlah bahwa untuk keamanan yang optimal, kunci dan IV harus dijaga kerahasiaannya.
Catatan
- Pastikan Anda memahami konsep dasar kriptografi sebelum menggunakan AES di aplikasi Anda.
- Gunakan library OpenSSL versi terbaru untuk mendapatkan fitur keamanan terbaru.
- Selalu uji kode Anda dengan baik sebelum menggunakannya di aplikasi produksi.