Mật Mã Affine
Mã hóa và giải mã bằng E(x) = (ax + b) mod 26. Nhập a và b, công cụ kiểm tra xem a có thể được hoàn tác không, tìm nghịch đảo modulo của nó và tính từng chữ cái; nếu bạn không biết khóa, chế độ giải mã sẽ thử cả 312 khóa và xếp hạng chúng theo mức độ kết quả trông giống tiếng Anh.
Không được có ước chung với 26 — hãy chọn một trong 12 giá trị bên dưới.
Bất kỳ số nguyên nào; nó được lấy mod 26.
Các bước tính cho khóa này
Mã hóa: E(x) = (5x + 8) mod 26
Giải mã: D(y) = 21(y − 8) mod 26
21 là nghịch đảo của 5 vì 5 × 21 = 105, hơn một bội số của 26 đúng 1 đơn vị.
Mọi giá trị hợp lệ của a và nghịch đảo của nó
| 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 |
Từng chữ cái — 12 chữ cái đầu tiên
| Chữ cái | x | a·x + b | mod 26 | Kết quả |
|---|---|---|---|---|
| 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 |
Cách Sử Dụng Mật Mã Affine
- 1. Chọn chế độ và nhập văn bản của bạn. Mã hóa biến văn bản thuần thành văn bản mật mã; Giải mã làm ngược lại.
- 2. Đặt khóa. Nhập a, hệ số nhân, và b, độ dịch chuyển. a phải là một trong 12 giá trị được liệt kê bên dưới các ô — nhấp vào một giá trị để dùng. b có thể là bất kỳ số nguyên nào; nó được rút gọn theo mod 26.
- 3. Đọc các bước tính. Bảng bên dưới kết quả cho cả hai công thức với khóa của bạn, nghịch đảo của a và phép tính của từng chữ cái.
- 4. Không có khóa? Hãy thử tất cả. Ở chế độ Giải mã, chọn Thử cả 312 khóa. Các kết quả được xếp hạng theo mức độ số lượng chữ cái của chúng khớp với tiếng Anh, và Dùng khóa này nạp bất kỳ khóa nào trong số đó.
Công Thức Của Mật Mã Affine
Đánh số các chữ cái từ số không: A = 0, B = 1 … Z = 25. Để mã hóa một chữ cái x, nhân nó với a, cộng b và giữ lại phần dư sau khi chia cho 26: E(x) = (a·x + b) mod 26. Để giải mã một chữ cái y, hãy hoàn tác các bước đó theo thứ tự ngược lại — trừ b, rồi nhân với a⁻¹, nghịch đảo modulo của a: D(y) = a⁻¹·(y − b) mod 26. Nghịch đảo là số mà khi nhân với a sẽ cho phần dư là 1. Với a = 5 nó là 21, vì 5 × 21 = 105 = 4 × 26 + 1.
Tại sao chỉ 12 giá trị của a dùng được
Phép nhân với a không bao giờ được đưa hai chữ cái đến cùng một vị trí, nếu không việc giải mã sẽ có hai đáp án. Điều đó xảy ra bất cứ khi nào a có chung ước với 26 = 2 × 13. Ví dụ với a = 2, A (0) và N (13) đều rơi vào b, vì 2 × 13 = 26, tức là 0 mod 26. Vì vậy a phải là số lẻ và không được là 13, còn lại mười hai số dưới đây — chính xác là những số có nghịch đảo mod 26. Với 26 lựa chọn cho b, điều đó cho 12 × 26 = 312 khóa, trong đó có một khóa (a = 1, b = 0) không làm thay đổi gì.
| 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 |
Ví Dụ Minh Họa: a = 5, b = 8
Với a = 5 và b = 8, AFFINE CIPHER được mã hóa thành IHHWVC SWFRCP — mẫu của công cụ. Các chữ cái của AFFINE, được tính từng bước:
| Chữ cái | x | 5x + 8 | mod 26 | Kết quả |
|---|---|---|---|---|
| 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 |
Để giải mã, công cụ nhân với a⁻¹ = 21. Chữ I (8) trở thành 21 × (8 − 8) = 0, tức là A; chữ H (7) trở thành 21 × (7 − 8) = −21, tức là 5 mod 26, tức là F. Giá trị âm là bình thường ở bước này — mod 26 chỉ có nghĩa là cộng hoặc trừ 26 cho đến khi số nằm trong khoảng từ 0 đến 25.
Hai mật mã quen thuộc thực chất là mật mã affine. Với a = 1 công thức là x + b, một phép dịch chuyển Caesar b vị trí; với a = 25 và b = 25 nó là mật mã Atbash, tức bảng chữ cái đọc ngược.
Cách Bẻ Khóa Mật Mã Affine
Chỉ có 311 khóa thực sự làm thay đổi văn bản, nên cách tấn công thô bạo nhất là thử tất cả, điều mà tùy chọn vét cạn làm trong một phần nhỏ của giây. Phần khó là nhận ra đáp án, nên công cụ xếp hạng mọi kết quả bằng phép so sánh chi bình phương số lượng chữ cái của nó với tiếng Anh điển hình. Với một câu hoặc nhiều hơn, khóa đúng sẽ lên đầu; với một cụm từ ngắn thì có thể không — với riêng IHHWVC SWFRCP, khóa thật (5, 8) xếp thứ tư — nên hãy đọc xuống danh sách thay vì tin vào dòng đầu tiên.
Các nhà phá mã có thể làm tốt hơn bằng đại số. Mật mã affine là một phép thay thế đơn bảng chữ cái — mỗi chữ cái luôn trở thành cùng một chữ cái — nên phân tích tần suất gợi ý những chữ cái mật mã nào đại diện cho E và T, và hai phỏng đoán như vậy cho hai phương trình. Với khóa ở trên, E (4) trở thành C (2) và T (19) trở thành Z (25), nên 4a + b ≡ 2 và 19a + b ≡ 25 (mod 26). Lấy phương trình thứ hai trừ phương trình thứ nhất cho 15a ≡ 23; nhân với 7, nghịch đảo của 15, cho a ≡ 161 ≡ 5, rồi b ≡ 2 − 20 ≡ 8. Hai chữ cái của văn bản thuần đã biết là đủ để khôi phục toàn bộ khóa.
Câu Hỏi Thường Gặp
- Mật mã affine là gì?
- Một mật mã thay thế biến số x của mỗi chữ cái thành (a·x + b) mod 26, nên mỗi chữ cái được nhân với a rồi dịch chuyển b. Khóa là cặp (a, b). Vì một chữ cái nhất định luôn trở thành cùng một chữ cái mật mã, nó là mật mã đơn bảng chữ cái — một họ hàng trông có vẻ mạnh hơn của mật mã Caesar, và không khó bẻ hơn.
- Tại sao a phải nguyên tố cùng nhau với 26?
- Giải mã nhân với nghịch đảo của a theo modulo 26, và nghịch đảo đó chỉ tồn tại khi a và 26 không có ước chung. Nếu chúng có ước chung, hai chữ cái khác nhau được mã hóa thành cùng một chữ cái và thông điệp không thể đọc ngược lại một cách chắc chắn. Điều đó loại mọi số chẵn và 13, chỉ còn 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 và 25.
- Làm thế nào để tìm nghịch đảo modulo của a?
- Tìm số từ 1 đến 25 mà khi nhân với a thì cho phần dư là 1 khi chia cho 26. Với a = 7 đó là 15, vì 7 × 15 = 105 = 4 × 26 + 1. Chỉ có mười hai trường hợp nên nhanh nhất là đọc chúng từ bảng ở trên; với modulo lớn, thuật toán Euclid mở rộng tìm ra nghịch đảo trực tiếp.
- Mật mã affine có bao nhiêu khóa?
- 312 — mười hai lựa chọn của a nhân với 26 lựa chọn của b. Một trong số đó, a = 1 với b = 0, để nguyên văn bản, nên 311 khóa thực sự mã hóa. Con số đó đủ ít để thử mọi khóa bằng tay trong một buổi chiều, và bằng máy tính trong tích tắc.
- Mật mã Caesar có phải là một loại mật mã affine không?
- Có. Đặt a = 1 biến công thức thành x + b, tức là một phép dịch chuyển Caesar b vị trí; ROT13 là a = 1, b = 13. Atbash cũng là affine, với a = 25 và b = 25. Cả hai đều nằm trong 312 khóa mà chế độ vét cạn thử.
- Mật mã affine có an toàn không?
- Không. Nó bị phá bởi vét cạn, bởi phân tích tần suất, và chỉ cần hai chữ cái của văn bản thuần đã biết, như phần đại số ở trên cho thấy. Nó là bài tập tuyệt vời về số học modulo, nhưng bất cứ điều gì quan trọng đều cần mã hóa hiện đại.