Chuyển đến nội dung

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.

Chế độ

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.

12 giá trị hợp lệ của a
Giữ nguyên

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ó

a1357911151719212325
a⁻¹1921153197231151725

Từng chữ cái — 12 chữ cái đầu tiên

Chữ cáixa·x + bmod 26Kết quả
A088I
F5337H
F5337H
I84822W
N137321V
E4282C
C21818S
I84822W
P15835F
H74317R
E4282C
R179315P

Cách Sử Dụng Mật Mã Affine

  1. 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. 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. 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. 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ì.

Các giá trị hợp lệ của a và nghịch đảo của chúng mod 26
a1357911151719212325
a⁻¹1921153197231151725

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áix5x + 8mod 26Kết quả
A088I
F5337H
I84822W
N137321V
E4282C

Để 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.

Công Cụ Liên Quan

Thêm trong Mã và mật mã