Caesar Cipher dinamai Julius Caesar (100 SM – 44 SM), yang menggunakannya untuk komunikasi militer rahasia. Caesar Cipher adalah sandi substitusi. Julius Caesar awalnya menggunakan pergeseran tiga untuk mengenkripsi dan mendekripsi pesan. Enkripsi dilakukan menggunakan fungsi affine: f(x)=x+b.
Pertama, setiap karakter teks awal (pesan yang akan dienkripsi) diubah menjadi angka dari 0 hingga 25, sesuai dengan posisinya dalam alfabet Latin yang berisi 26 huruf --> (a = 0, b = 1 ... z = 25 ).
Kemudian setiap bilangan yang diperoleh ditransformasikan dengan fungsi affine (f(x) = 1x + b). "x" mewakili angka sementara "b" ditentukan selama enkripsi. "b" adalah kunci yang digunakan untuk mendekripsi pesan terakhir.
Jika kita mengambil semua gambar dan memasukkannya ke dalam daftar, kita memperoleh n angka yang sesuai dengan n karakter teks awal. Langkah selanjutnya adalah mencari nilai modulo 26 setiap bilangan. ( Modulo artinya sisa )
Contoh : Modulo 4 dari 19 adalah 3 karena
19 = 4 * 4 + 3
Sebaliknya modulo 26 dari 26 adalah 0 karena26 = 26 * 1 + 0
Oleh karena itu, kita memperoleh daftar baru dengan n elemen, masing-masing antara 0 dan 25, keduanya disertakan. Semua angka-angka ini diubah menjadi huruf Alfabet Latin menggunakan tabel di bawah ini.
Kami akhirnya membuat pesan terakhir dengan meletakkan semua huruf secara berdampingan.
Langkah 1 dan 4 dapat dilakukan dengan tabel berikut :
A | B | C | D | E | F | G | H | SAYA | J | K | L | M | N | HAI | P | Q | R | S | T | kamu | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Jika penyerang mengetahui bahwa pesan telah dienkripsi menggunakan Caesar Cipher, ia dapat mencoba semua shift (nilai b dari 1 hingga 25) untuk mendekripsi pesan tersebut. Ini disebut metode bruteforce .
Kita juga dapat menggunakan analisis frekuensi untuk mendekripsi pesan karena setiap huruf dienkripsi dengan algoritma yang sama dan huruf yang paling umum dalam bahasa Inggris adalah :
Dengan menggunakan tabel di atas, ATTACK dapat dituliskan sebagai : 25 0 19 19 0 2 10 25 Gambar tiap angka :
Daftar barunya adalah : 29 4 23 23 4 6 14 29
Dengan menggunakan metode modulo 26 , kita memperoleh:
Pesan terakhir adalah 3 4 23 23 4 6 14 3 dan menggunakan tabel lagi, kita mengubahnya menjadi pesan terenkripsi :
DEXXEGOD
ZATTACKZ dienkripsi dengan fungsi x + 4 dan menjadi DEXXEGOD .
Dengan menggunakan tabel di atas, DEXXEGOD dapat dituliskan sebagai : 3 4 23 23 4 6 14 3 Gambar tiap angka :
Daftar barunya adalah : -1 0 19 19 0 2 10 -1
Dengan menggunakan metode modulo 26 , kita peroleh :
Pesan terakhir adalah 25 0 19 19 0 2 10 25 dan menggunakan tabel lagi, kita mengubahnya menjadi pesan terenkripsi :
ZATTACKZ
DEXXEGOD didekripsi dengan fungsi 1x - 4 dan menjadi ZATTACKZ .
Ini disebut metode bruteforce.
Dengan menggunakan tabel di atas, DEXXEGOD dapat dituliskan sebagai : 3 4 23 23 4 6 14 3
a adalah angka antara 0 dan 25. (a = 0 berarti pesan sudah didekripsi)
Menggunakan fungsi f(x) = Mod(1x + a, 26) :
Kita bisa mendapatkan semua hasil ini:
A | Teks yang didekripsi |
---|---|
1 | fgzzgiqf |
2 | ghaahjrg |
3 | hibbiksh |
4 | ijccjlti |
5 | jkddkmuj |
6 | kleelnvk |
7 | lmffmowl.dll |
8 | mnggnpxm |
9 | nohhoqyn |
10 | opiprzo |
11 | pqjjqsap |
12 | qrkkrtbq |
13 | RSLLSUCR |
14 | stmmtvds |
15 | tunnuwet |
16 | uvoovxfu |
17 | vwppwygv |
18 | wxqqxzhw |
19 | xyrraix |
20 | yzsszbjy |
21 | zseranganz |
22 | abuubdla |
23 | bcvvcemb |
24 | cdwwdfnc |
25 | dexxegogod |
Satu-satunya teks yang masuk akal adalah zactionz sehingga kita dapat menyimpulkan bahwa kuncinya adalah 21 (25 - b = 21).
DEXXEGOD didekripsi dengan fungsi f(x) = 1x - 4 atau f(x) = 1x + 21 dan menjadi ZATTACKZ .
Bahasa | Enkripsi | Dekripsi |
---|---|---|
C | caesar.c | Segera hadir |
C# | Caesar.cs | Segera hadir |
C++ | utama.cpp | utama.cpp |
JavaScript | mengenkripsi.js | mendekripsi.js |
ular piton | mengenkripsi.py | mendekripsi.py |
Cepat | lib.swift | lib.swift |
npm i @cryptoolsorg/caesarcipher