C++ Aes Encrypt String

5 min read Jul 05, 2024
C++ Aes Encrypt String

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:

  1. 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:

  1. Memasukkan library: Memasukkan library yang diperlukan, termasuk OpenSSL.
  2. Mendefinisikan fungsi encryptAES: Fungsi ini menerima plaintext, kunci, dan IV sebagai input.
  3. Menghasilkan kunci dan IV: Kunci dan IV dikonversi dari string ke array byte.
  4. Menginisialisasi konteks AES: Konteks AES diinisialisasi dengan kunci yang diberikan.
  5. Mengenkripsi string: Fungsi EVP_EncryptUpdate digunakan untuk mengenkripsi string.
  6. 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.

Latest Posts