Mật mã Affine
Mã hóa và giải mã mật mã Affine bằng công thức E(x) = (a·x + b) mod 26. Điều chỉnh từng bước hệ số nhân a và độ dịch b, xem bảng chữ cái thay thế cùng công thức trực tiếp cập nhật, rồi sao chép, tải xuống hoặc chia sẻ kết quả. Mọi thứ đều chạy riêng tư trong trình duyệt của bạn.
Hệ số nhân a
Độ dịch b
E(x) = (5x + 8) mod 26
Hệ số nhân a phải nguyên tố cùng nhau với 26, nên chỉ có mười hai giá trị được phép: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, và 25. Độ dịch b có thể là bất kỳ số nào từ 0 đến 25.
Nhập văn bản ở trên để xem kết quả tại đây.
Bảng chữ cái thay thế
Thường
Mã hóa
Cách sử dụng Mật mã Affine
- 1
Chọn mã hóa hoặc giải mã
Chọn Mã hóa để biến văn bản thường thành văn bản mã hóa Affine, hoặc Giải mã để biến văn bản mã hóa trở lại thành văn bản đọc được bằng cùng hai khóa.
- 2
Đặt hệ số nhân a
Bước hệ số nhân a qua mười hai giá trị hợp lệ của nó. Chỉ những số nguyên tố cùng nhau với 26 mới được cung cấp, nên mật mã luôn có thể đảo ngược.
- 3
Đặt độ dịch b
Bước độ dịch b tới bất kỳ giá trị nào từ 0 đến 25. Công thức trực tiếp và bảng chữ cái thay thế cập nhật ngay khoảnh khắc bạn đổi nó.
- 4
Nhập hoặc dán văn bản của bạn
Nhập thông điệp của bạn và mật mã chạy ngay khi bạn gõ. Các chữ cái được mã hóa trong khi khoảng trắng, chữ số và dấu câu đi qua không thay đổi, và cách viết hoa được giữ nguyên.
- 5
Sao chép, tải xuống hoặc chia sẻ
Sao chép kết quả, tải xuống dưới dạng tệp văn bản, hoặc chia sẻ một liên kết mở lại công cụ với đúng khóa, văn bản và chiều của bạn, sẵn sàng để dùng.
Tìm hiểu về mật mã Affine
Mật mã Affine là gì?
Mật mã Affine là một mật mã thay thế đơn bảng được dựng từ số học mô-đun đơn giản. Mỗi chữ cái được biến thành một con số, với A = 0 cho đến Z = 25, đưa qua hàm tuyến tính E(x) = (a·x + b) mod 26, rồi biến trở lại thành một chữ cái. Hai con số a và b là khóa: a là hệ số nhân và b là độ dịch. Vì cùng một chữ cái luôn ánh xạ tới cùng một chữ cái mã hóa, mật mã Affine thuộc cùng họ với các mật mã Caesar và Atbash, nhưng bước nhân-rồi-dịch khiến nó tổng quát hơn cả hai.
Tên gọi của nó đến từ hàm affine a·x + b, sự kết hợp của một phép nhân và một phép cộng mang lại cấu trúc cho mật mã này. Đây là một trong những mật mã được ưa chuộng nhất để giảng dạy toán học đằng sau mật mã học, vì nó cho thấy số học mô-đun, các số nguyên tố cùng nhau và nghịch đảo mô-đun kết hợp với nhau thành một mã hoạt động được ra sao. Nó cũng là một khách quen trong các câu đố, phòng thoát hiểm và thử thách capture-the-flag, nơi không gian khóa nhỏ của nó khiến việc phá bằng tay trở nên thỏa mãn.
Công thức mã hóa Affine
Để mã hóa, mỗi chữ cái được chuyển thành vị trí của nó trong bảng chữ cái, với A = 0, B = 1, và cứ thế đến Z = 25. Con số x đó được đưa vào công thức E(x) = (a·x + b) mod 26: nhân với a, cộng thêm b, rồi lấy phần dư sau khi chia cho 26 để kết quả gói trở lại vào khoảng từ 0 đến 25. Chuyển con số đó trở lại thành chữ cái sẽ cho ra văn bản mã hóa. Nhân với a kéo giãn và xáo trộn bảng chữ cái, trong khi cộng b trượt nó dọc theo, còn mod 26 giữ mọi thứ bên trong vòng 26 chữ cái.
Công cụ ở trên cho thấy toàn bộ ánh xạ trong nháy mắt. Bảng chữ cái thay thế liệt kê mọi chữ cái thường từ A–Z cùng chữ cái mã hóa mà nó trở thành dưới các giá trị a và b hiện tại của bạn, và nó cập nhật ngay khoảnh khắc bạn đổi một trong hai khóa. Chữ hoa chữ thường được giữ nguyên, và bất cứ thứ gì không phải chữ cái — khoảng trắng, chữ số, dấu câu, biểu tượng cảm xúc — đều đi thẳng qua mà không bị động đến, nên hình dạng thông điệp của bạn vẫn đọc được ngay cả sau khi đã được mã hóa.
Chọn khóa a và b
Độ dịch b thì dễ: nó có thể là bất kỳ số nguyên nào từ 0 đến 25. Hệ số nhân a mới là điều thú vị, vì không phải giá trị nào cũng dùng được. Để mật mã có thể đảo ngược, a phải nguyên tố cùng nhau với 26, nghĩa là nó không chia sẻ thừa số chung nào với 26 ngoài 1. Vì 26 = 2 × 13, mọi số chẵn và mọi bội số của 13 đều bị loại, để lại đúng mười hai giá trị dùng được: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, và 25.
Nếu a chia sẻ một thừa số với 26 — chẳng hạn a = 2 — thì nhiều chữ cái thường khác nhau sẽ va chạm vào cùng một chữ cái mã hóa, và thông điệp không còn có thể giải mã được một cách duy nhất. Đó là lý do bộ điều khiển hệ số nhân ở trên chỉ bước qua mười hai giá trị hợp lệ: không thể chọn một khóa mà không thể đảo ngược. Với mười hai lựa chọn cho a và hai mươi sáu cho b, có tổng cộng 312 tổ hợp khóa khả dĩ, một trong số đó, a = 1 và b = 0, để văn bản không thay đổi.
Một ví dụ Affine thực hành
Lấy các khóa a = 5 và b = 8 và mã hóa từ AFFINECIPHER. Chữ cái đầu tiên A là 0, nên E(0) = (5·0 + 8) mod 26 = 8, tức là I. Chữ cái tiếp theo F là 5, nên E(5) = (5·5 + 8) mod 26 = 33 mod 26 = 7, tức là H. Tiếp tục từng chữ cái một qua cả từ sẽ cho ra văn bản mã hóa IHHWVCSWFRCP.
Bạn có thể theo dõi từng bước trên bảng chữ cái thay thế ở trên: đặt a thành 5 và b thành 8, và hàng mã hóa hiển thị A trở thành I, B trở thành N, C trở thành S, và cứ thế dọc theo bảng chữ cái. Vì ánh xạ là cố định, mã hóa cùng một chữ cái luôn cho cùng một kết quả — cả hai chữ F trong AFFINE đều trở thành H — đó chính là tính chất cho phép kẻ tấn công dùng phân tích tần suất chống lại nó.
Giải mã một mật mã Affine
Việc giải mã chạy công thức theo chiều ngược lại với D(y) = a⁻¹·(y − b) mod 26. Thành phần mới là a⁻¹, nghịch đảo mô-đun của a: con số mà khi nhân với a sẽ cho ra 1 mod 26. Với a = 5 nghịch đảo là 21, vì 5 × 21 = 105 = 4 × 26 + 1. Để giải mã, bạn trừ đi độ dịch b, nhân với nghịch đảo đó, rồi lấy kết quả mod 26. Đưa ví dụ trở lại, chữ cái mã hóa I là 8, và D(8) = 21·(8 − 8) mod 26 = 0, tức là A một lần nữa.
Bạn không bao giờ phải tự tính ra nghịch đảo. Chọn Giải mã ở trên, nhập đúng a và b đã được dùng để mã hóa, và dán văn bản mã hóa — công cụ tìm nghịch đảo mô-đun và khôi phục thông điệp ngay lập tức. Vì mật mã Affine là một ánh xạ một-một sạch sẽ, việc giải mã trả về văn bản gốc của bạn một cách chính xác, với khoảng trắng, cách viết hoa và dấu câu đều còn nguyên vẹn.
Caesar và Atbash như những trường hợp đặc biệt
Mật mã Affine lặng lẽ chứa đựng hai trong số những mật mã cổ điển nổi tiếng nhất. Đặt hệ số nhân a thành 1 và công thức thu gọn về E(x) = (x + b) mod 26, đó chính xác là mật mã Caesar — một phép dịch thuần túy mọi chữ cái đi b vị trí. Với a = 1 và b = 3 bạn có được phép dịch kinh điển mà Julius Caesar được cho là đã dùng, biến A into D và HELLO thành KHOOR.
Đặt a = 25 và b = 25 và một thứ cũng quen thuộc không kém sẽ xuất hiện. Vì 25 cũng chính là −1 mod 26, công thức trở thành E(x) = (25 − x) mod 26, đảo ngược bảng chữ cái nên A becomes Z, B becomes Y, và cứ thế. Đó là mật mã Atbash, được các kinh sư Do Thái dùng hàng nghìn năm trước. Thấy cả hai mật mã rơi ra từ một công thức là cách rõ ràng nhất để hiểu mật mã Affine tổng quát hóa chúng ra sao — hãy thử từng thiết lập ở trên và xem bảng thay thế xác nhận điều đó.
Mật mã Affine an toàn đến mức nào?
Theo bất kỳ thước đo hiện đại nào, mật mã Affine không mang lại sự an toàn thực sự nào. Với chỉ 312 khóa khả dĩ — và còn ít hơn nữa khóa thực sự xáo trộn được văn bản — một máy tính có thể thử hết tất cả trong một phần nhỏ của giây, và ngay cả một người kiên nhẫn cũng có thể dùng sức phá nó bằng tay. Đơn giản là không có đủ thông tin bí mật trong hai con số nhỏ để chống lại tấn công.
Nó cũng dễ bị phân tích tần suất, vì nó là mật mã thay thế đơn bảng: mỗi chữ cái luôn ánh xạ tới cùng một chữ cái mã hóa, nên chữ cái mã hóa phổ biến nhất rất có khả năng đại diện cho E, chữ cái phổ biến nhất trong tiếng Anh. Một kẻ tấn công có thể đoán hoặc biết được chỉ hai cặp chữ cái thường-tới-mã hóa thậm chí có thể giải trực tiếp ra a và b bằng một chút đại số. Không điều nào trong số này là lỗi cần sửa — đó chính là điều khiến mật mã Affine trở thành một công cụ giảng dạy tốt như vậy — nhưng để bảo vệ thông tin thực sự bạn nên luôn dùng một thuật toán hiện đại, đã được giới chuyên môn bình duyệt như AES.
Câu hỏi thường gặp
Mật mã Affine là gì?
Mật mã Affine hoạt động như thế nào?
Hệ số nhân a có thể nhận những giá trị nào?
Khóa a và b trong mật mã Affine là gì?
Làm thế nào để giải mã một mật mã Affine?
Có thể cho một ví dụ mật mã Affine thực hành không?
Mật mã Affine liên quan đến mật mã Caesar như thế nào?
Mật mã Affine liên quan đến mật mã Atbash như thế nào?
Có bao nhiêu khóa mật mã Affine khả dĩ?
Làm thế nào để phá mật mã Affine?
Mật mã Affine có giữ khoảng trắng, số và dấu câu không?
Văn bản của tôi có được tải lên máy chủ không?
Công cụ liên quan
Tiếp tục với những công cụ hữu ích này