Sandi Affine
Enkode dan dekode dengan E(x) = (ax + b) mod 26. Masukkan a dan b, lalu alat ini memeriksa bahwa a dapat dibalik, mencari invers modularnya, dan menguraikan perhitungan setiap huruf; jika Anda tidak tahu kuncinya, mode dekode mencoba ke-312 kunci dan memeringkatnya menurut seberapa mirip bahasa Inggris hasilnya.
Tidak boleh memiliki faktor yang sama dengan 26 — pilih salah satu dari 12 nilai di bawah.
Bilangan bulat apa pun; nilainya diambil mod 26.
Langkah kerja untuk kunci ini
Enkode: E(x) = (5x + 8) mod 26
Dekode: D(y) = 21(y − 8) mod 26
21 adalah invers dari 5 karena 5 × 21 = 105, yaitu 1 lebih banyak dari kelipatan 26.
Setiap a yang valid dan inversnya
| a | 1 | 3 | 5 | 7 | 9 | 11 | 15 | 17 | 19 | 21 | 23 | 25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a⁻¹ | 1 | 9 | 21 | 15 | 3 | 19 | 7 | 23 | 11 | 5 | 17 | 25 |
Huruf demi huruf — 12 huruf pertama
| Huruf | x | a·x + b | mod 26 | Hasil |
|---|---|---|---|---|
| A | 0 | 8 | 8 | I |
| F | 5 | 33 | 7 | H |
| F | 5 | 33 | 7 | H |
| I | 8 | 48 | 22 | W |
| N | 13 | 73 | 21 | V |
| E | 4 | 28 | 2 | C |
| C | 2 | 18 | 18 | S |
| I | 8 | 48 | 22 | W |
| P | 15 | 83 | 5 | F |
| H | 7 | 43 | 17 | R |
| E | 4 | 28 | 2 | C |
| R | 17 | 93 | 15 | P |
Cara Menggunakan Sandi Affine
- 1. Pilih mode dan masukkan teks Anda. Enkode mengubah teks biasa menjadi teks sandi; Dekode membaliknya.
- 2. Atur kuncinya. Masukkan a, pengali, dan b, pergeseran. a harus berupa salah satu dari 12 nilai yang tercantum di bawah kolom isian — klik salah satunya untuk memakainya. b dapat berupa bilangan bulat apa pun; nilainya direduksi mod 26.
- 3. Baca langkah kerjanya. Panel di bawah hasil memuat kedua rumus untuk kunci Anda, invers dari a, dan aritmetika setiap huruf.
- 4. Tidak punya kunci? Coba semuanya. Dalam mode Dekode, centang Coba semua 312 kunci. Hasilnya diperingkat menurut seberapa dekat jumlah hurufnya dengan bahasa Inggris, dan Gunakan kunci ini memuat salah satunya.
Rumus Sandi Affine
Beri nomor huruf mulai dari nol: A = 0, B = 1 … Z = 25. Untuk mengenkripsi huruf x, kalikan dengan a, tambahkan b, dan ambil sisa pembagian dengan 26: E(x) = (a·x + b) mod 26. Untuk mendekripsi huruf y, balikkan langkah-langkah itu secara terbalik — kurangi b, lalu kalikan dengan a⁻¹, invers modular dari a: D(y) = a⁻¹·(y − b) mod 26. Invers adalah bilangan yang jika dikalikan dengan a menyisakan 1. Untuk a = 5 nilainya 21, karena 5 × 21 = 105 = 4 × 26 + 1.
Mengapa hanya 12 nilai a yang berfungsi
Perkalian dengan a tidak boleh pernah memetakan dua huruf ke tempat yang sama, atau dekode akan memiliki dua jawaban. Itu terjadi setiap kali a memiliki faktor yang sama dengan 26 = 2 × 13. Dengan a = 2, misalnya, A (0) dan N (13) sama-sama mendarat di b, karena 2 × 13 = 26, yaitu 0 mod 26. Jadi a harus ganjil dan tidak boleh 13, menyisakan dua belas bilangan di bawah ini — tepat bilangan yang memiliki invers mod 26. Dengan 26 pilihan b, itu menghasilkan 12 × 26 = 312 kunci, satu di antaranya (a = 1, b = 0) tidak mengubah apa pun.
| a | 1 | 3 | 5 | 7 | 9 | 11 | 15 | 17 | 19 | 21 | 23 | 25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a⁻¹ | 1 | 9 | 21 | 15 | 3 | 19 | 7 | 23 | 11 | 5 | 17 | 25 |
Contoh Kasus: a = 5, b = 8
Dengan a = 5 dan b = 8, AFFINE CIPHER dienkripsi menjadi IHHWVC SWFRCP — contoh dari alat ini. Huruf-huruf AFFINE, diuraikan langkah demi langkah:
| Huruf | x | 5x + 8 | mod 26 | Hasil |
|---|---|---|---|---|
| A | 0 | 8 | 8 | I |
| F | 5 | 33 | 7 | H |
| I | 8 | 48 | 22 | W |
| N | 13 | 73 | 21 | V |
| E | 4 | 28 | 2 | C |
Untuk mendekode, alat ini mengalikan dengan a⁻¹ = 21. Huruf I (8) menjadi 21 × (8 − 8) = 0, yaitu A; huruf H (7) menjadi 21 × (7 − 8) = −21, yaitu 5 mod 26, yaitu F. Nilai negatif lazim pada langkah ini — mod 26 hanya berarti menambah atau mengurangi 26 sampai angkanya berada di antara 0 dan 25.
Dua sandi yang sudah dikenal sebenarnya adalah sandi affine yang menyamar. Dengan a = 1 rumusnya x + b, yaitu pergeseran Caesar sebesar b; dengan a = 25 dan b = 25 rumusnya adalah sandi Atbash, alfabet yang dibaca terbalik.
Cara Memecahkan Sandi Affine
Dengan hanya 311 kunci yang mengubah sesuatu, serangan paling kasar adalah mencoba semuanya, yang dilakukan opsi brute-force dalam sepersekian detik. Bagian tersulitnya adalah mengenali jawabannya, sehingga alat ini memeringkat setiap hasil dengan perbandingan chi-kuadrat antara jumlah hurufnya dan bahasa Inggris yang lazim. Pada satu kalimat atau lebih, kunci yang benar muncul di urutan teratas; pada frasa pendek belum tentu — untuk IHHWVC SWFRCP saja, kunci sebenarnya (5, 8) berada di peringkat keempat — jadi bacalah sepanjang daftar, jangan hanya percaya pada baris pertama.
Para kriptanalis dapat bekerja lebih baik dengan aljabar. Sandi affine adalah substitusi monoalfabetik — setiap huruf selalu menjadi huruf yang sama — sehingga analisis frekuensi menunjukkan huruf sandi mana yang mewakili E dan T, dan dua tebakan itu menghasilkan dua persamaan. Dengan kunci di atas, E (4) menjadi C (2) dan T (19) menjadi Z (25), sehingga 4a + b ≡ 2 dan 19a + b ≡ 25 (mod 26). Mengurangkan persamaan pertama dari yang kedua menghasilkan 15a ≡ 23; mengalikan dengan 7, invers dari 15, menghasilkan a ≡ 161 ≡ 5, lalu b ≡ 2 − 20 ≡ 8. Dua huruf teks biasa yang diketahui sudah cukup untuk memulihkan seluruh kunci.
Pertanyaan yang Sering Diajukan
- Apa itu sandi affine?
- Sandi substitusi yang mengubah nomor x setiap huruf menjadi (a·x + b) mod 26, sehingga setiap huruf dikalikan dengan a lalu digeser sebesar b. Kuncinya adalah pasangan (a, b). Karena sebuah huruf selalu menjadi huruf sandi yang sama, sandi ini bersifat monoalfabetik — kerabat sandi Caesar yang tampak lebih kuat, tetapi tidak lebih sulit dipecahkan.
- Mengapa a harus koprima dengan 26?
- Dekode mengalikan dengan invers a modulo 26, dan invers itu hanya ada jika a dan 26 tidak memiliki faktor persekutuan. Jika memilikinya, dua huruf berbeda dienkripsi menjadi huruf yang sama dan pesan tidak dapat dibaca kembali dengan pasti. Itu menyingkirkan setiap bilangan genap dan 13, menyisakan 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, dan 25.
- Bagaimana cara mencari invers modular dari a?
- Cari bilangan antara 1 dan 25 yang jika dikalikan dengan a menyisakan 1 saat dibagi 26. Untuk a = 7 nilainya 15, karena 7 × 15 = 105 = 4 × 26 + 1. Dengan hanya dua belas kasus, cara tercepat adalah membacanya dari tabel di atas; untuk modulus besar, algoritme Euklides yang diperluas menemukan inversnya secara langsung.
- Berapa banyak kunci yang dimiliki sandi affine?
- 312 — dua belas pilihan a dikalikan 26 pilihan b. Satu di antaranya, a = 1 dengan b = 0, membiarkan teks tidak berubah, sehingga 311 kunci benar-benar mengenkripsi. Jumlah itu cukup sedikit untuk mencoba setiap kunci secara manual dalam satu sore, dan dalam sekejap oleh komputer.
- Apakah sandi Caesar termasuk sandi affine?
- Ya. Dengan a = 1 rumusnya menjadi x + b, yaitu pergeseran Caesar sebesar b; ROT13 adalah a = 1, b = 13. Atbash juga affine, dengan a = 25 dan b = 25. Keduanya termasuk dalam ke-312 kunci yang dicoba oleh brute force.
- Apakah sandi affine aman?
- Tidak. Sandi ini dapat dibobol dengan brute force, analisis frekuensi, dan hanya dengan dua huruf teks biasa yang diketahui, seperti yang ditunjukkan aljabar di atas. Sandi ini latihan yang sangat baik untuk aritmetika modular, tetapi apa pun yang penting memerlukan enkripsi modern.