Pengantar
Pada artikel kali ini kita akan membahas metode kriptogafi yang sangat sederhana dan tergolong kepada algoritma kriptografi klasik yaitu Caesar Cipher yang merupakan salah satu metode kriptografi transposisi yang artinya proses enkripsi dan dekripsinya dilakukan dengan melakukan perubahan posisi pada karakter atau byte data.
Caesar Cipher adalah salah satu metode enkripsi sederhana yang digunakan untuk mengamankan pesan rahasia. Metode ini ditemukan oleh Julius Caesar pada abad ke-1 SM dan masih digunakan hingga saat ini.
Cara kerja Caesar Cipher cukup mudah, yaitu dengan menggeser setiap huruf dalam pesan sejauh n kali di sepanjang alfabet. Misalnya, jika kita menggeser setiap huruf sejauh 3 kali, maka huruf A akan menjadi D, huruf B menjadi E, dan seterusnya. Proses penggeseran ini dikenal sebagai "shift" atau "key".
Contohnya, jika pesan asli adalah "RAHASIA", dan kita menggeser setiap huruf sejauh 3 kali, maka pesan yang terenkripsi akan menjadi "UDKDVSDL".
Meskipun metode ini sangat sederhana, namun Caesar Cipher cukup efektif untuk melindungi pesan rahasia dari orang-orang yang tidak berwenang. Namun, metode ini juga mudah ditembus oleh para ahli kriptografi, sehingga tidak cocok digunakan untuk mengamankan pesan yang sangat penting.
Pseudocode
Algoritma atau tahapan dari Caesar Cipher sangat sederhana, adapun tahapan atau pseudocode dari Caesar Cipher adalah sebagai berikut :
1. Simpan pesan yang akan dienkripsi ke dalam variabel plaintext
2. Simpan kunci pergeseran ke dalam variabel key
3. Buat variabel ciphertext dengan nilai awal string kosong ("")
4. Untuk setiap karakter c dalam plaintext, lakukan:
a. Jika c adalah huruf kapital, maka geser karakter sejauh key, dan tambahkan ke dalam ciphertext
b. Jika c adalah huruf kecil, maka geser karakter sejauh key, dan tambahkan ke dalam ciphertext
c. Jika c bukan huruf, maka tambahkan c langsung ke dalam ciphertext
5. Tampilkan ciphertext.
Adapun proses dekripsi adalah sama dengan proses enkripsi hanya saja pergeseran karakter dilakukan dengan pergeseran mundur.
Contoh Source Code
Berikut contoh source code menggunakan PHP :
PHP Enkripsi
<?php
function encryptCaesarCipher($plaintext, $key) {
$ciphertext = "";
for ($i = 0; $i < strlen($plaintext); $i++) {
$c = $plaintext[$i];
if (ctype_upper($c)) {
$ciphertext .= chr((ord($c) - 65 + $key) % 26 + 65);
} else if (ctype_lower($c)) {
$ciphertext .= chr((ord($c) - 97 + $key) % 26 + 97);
} else {
$ciphertext .= $c;
}
}
return $ciphertext;
}
// contoh penggunaan fungsi encryptCaesarCipher
$plaintext = "RAHASIA";
$key = 3;
$ciphertext = encryptCaesarCipher($plaintext, $key);
echo $ciphertext; // Output: UDKDVSDL
?>
PHP Dekripsi
<?php
function decryptCaesarCipher($ciphertext, $key) {
$plaintext = "";
for ($i = 0; $i < strlen($ciphertext); $i++) {
$c = $ciphertext[$i];
if (ctype_upper($c)) {
$plaintext .= chr((ord($c) - 65 - $key + 26) % 26 + 65);
} else if (ctype_lower($c)) {
$plaintext .= chr((ord($c) - 97 - $key + 26) % 26 + 97);
} else {
$plaintext .= $c;
}
}
return $plaintext;
}
// contoh penggunaan fungsi decryptCaesarCipher
$ciphertext = "UDKDVSDL";
$key = 3;
$plaintext = decryptCaesarCipher($ciphertext, $key);
echo $plaintext; // Output: RAHASIA
?>
Java Enkripsi
public class CaesarCipher {
public static String encrypt(String plaintext, int key) {
String ciphertext = "";
for (int i = 0; i < plaintext.length(); i++) {
char c = plaintext.charAt(i);
if (Character.isUpperCase(c)) {
ciphertext += (char) ((c - 'A' + key) % 26 + 'A');
} else if (Character.isLowerCase(c)) {
ciphertext += (char) ((c - 'a' + key) % 26 + 'a');
} else {
ciphertext += c;
}
}
return ciphertext;
}
public static String decrypt(String ciphertext, int key) {
String plaintext = "";
for (int i = 0; i < ciphertext.length(); i++) {
char c = ciphertext.charAt(i);
if (Character.isUpperCase(c)) {
plaintext += (char) ((c - 'A' - key + 26) % 26 + 'A');
} else if (Character.isLowerCase(c)) {
plaintext += (char) ((c - 'a' - key + 26) % 26 + 'a');
} else {
plaintext += c;
}
}
return plaintext;
}
// contoh penggunaan fungsi encrypt dan decrypt
public static void main(String[] args) {
String plaintext = "RAHASIA";
int key = 3;
// enkripsi
String ciphertext = encrypt(plaintext, key);
System.out.println("Ciphertext: " + ciphertext);
// dekripsi
String decrypted = decrypt(ciphertext, key);
System.out.println("Decrypted: " + decrypted);
}
}
Sekian dulu artikel mengenai Caesar Cipher kali ini, semoga bermanfaat bagi kita semua 😄