Lompat ke konten

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.

Mode

Tidak boleh memiliki faktor yang sama dengan 26 — pilih salah satu dari 12 nilai di bawah.

Bilangan bulat apa pun; nilainya diambil mod 26.

12 nilai a yang valid
Pertahankan

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

a1357911151719212325
a⁻¹1921153197231151725

Huruf demi huruf — 12 huruf pertama

Hurufxa·x + bmod 26Hasil
A088I
F5337H
F5337H
I84822W
N137321V
E4282C
C21818S
I84822W
P15835F
H74317R
E4282C
R179315P

Cara Menggunakan Sandi Affine

  1. 1. Pilih mode dan masukkan teks Anda. Enkode mengubah teks biasa menjadi teks sandi; Dekode membaliknya.
  2. 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. 3. Baca langkah kerjanya. Panel di bawah hasil memuat kedua rumus untuk kunci Anda, invers dari a, dan aritmetika setiap huruf.
  4. 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.

Nilai a yang valid dan inversnya mod 26
a1357911151719212325
a⁻¹1921153197231151725

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:

Hurufx5x + 8mod 26Hasil
A088I
F5337H
I84822W
N137321V
E4282C

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.

Alat Terkait

Lainnya di Kode dan sandi