Language

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".

Ilustrasi Enkripsi Caesar Cipher

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 😄

No comments

Leave your comment

In reply to Some User
Related Articles
  • Sekilas Kriptografi
    Sekilas Kriptografi
    Information
    1 year(s) 8 month(s) 0 day(s) ago
    Kriptografi adalah ilmu dan seni melindungi informasi dengan mengubah teks asli menjadi bentuk yang tidak dapat dibaca atau dimengerti oleh pihak yang tidak berwenang. Tujuan utama kriptografi adalah menjaga kerahasiaan dan keamanan informasi, serta memastikan bahwa hanya orang yang berhak memiliki akses ke informasi tersebut.
  • Polymorphisme Pada Object Oriented Programming
    Polymorphisme Pada Object Oriented Programming
    Information
    1 year(s) 7 month(s) 3 day(s) ago
    polymorphisme dapat diartikan dengan dapat memiliki banyak bentuk. Dalam bidang pemrograman, bentuk disini dapat kita korelasikan dengan data atau proses yang dimiliki oleh sebuah objek. Dengan menggunakan konsep polymorphisme kita dapat menghasilkan beberapa objek yang berbeda dari kelas yang sama.
  • Pengantar Pemrograman Berorientasi Objek
    Pengantar Pemrograman Berorientasi Objek
    Information
    2 year(s) 8 month(s) 14 day(s) ago
    Pemrograman Berorientasi Objek memiliki banyak definisi. Pemrograman berorientasi objek dapat dikatakan sebagai paradigma atau mekanisme yang digunakan dalam pemrograman yang didasarkan oleh konsep objek dan kelas. Pada definisi lain, pemrograman berorientasi objek dapat dikatakan sebagai model pemrograman yang membangun perangkat lunak menggunakan pendekatan data atau objek dibandingkan dengan fungsi dan logika. Kedua definisi tersebut secara konsep menyatakan bahwa pemrograman berorientasi objek merupakan pemrograman yang berfokus pada struktur data dalam bentuk objek.
  • Video Single Linkage Clustering
    Video Single Linkage Clustering
    Information
    2 year(s) 8 month(s) 15 day(s) ago
    Single Linkage Clustering merupakan salah satu metode clustering yang tergolong kedalam agglomerative clustering, dimana proses clustering diawali dengan setiap individu sebagai cluster awal yang kemudian seiring dengan berjalannya proses clustering akan membentuk k buah cluster yang di-inginkan.
  • Video Euclidean Distance
    Video Euclidean Distance
    Information
    2 year(s) 8 month(s) 15 day(s) ago
    Euclidean Distance merupakan formula untuk menghitung jarak antara dua titik atau objek berdasarkan nilai fitur yang dimiliki oleh kedua titik atau objek tersebut. Pada video ini akan disimulasikan bagaimana jarak euclidean distance dihitung dan digunakan sebagai nilai yang menyatakan ketidaksamaan antar objek sehingga dapat digunakan dalam proses pengelompokkan ataupun klasifikasi.