T

Text Machine

Công cụ văn bản mạnh mẽ, ngay trong trình duyệt của bạn

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.

Khóa của mật mã

Hệ số nhân a

5

Độ dịch b

8

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.

Văn bản thường
Văn bản mã hóa

Nhập văn bản ở trên để xem kết quả tại đây.

Bảng chữ cái thay thế

Thường

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z

Mã hóa

I
N
S
X
C
H
M
R
W
B
G
L
Q
V
A
F
K
P
U
Z
E
J
O
T
Y
D

Cách sử dụng Mật mã Affine

  1. 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. 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. 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. 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. 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 là một mật mã thay thế đơn bảng mã hóa mỗi chữ cái bằng công thức E(x) = (a·x + b) mod 26. Mỗi chữ cái được chuyển thành một số từ 0 đến 25, nhân với a, dịch đi b, rút gọn mod 26, rồi chuyển trở lại thành chữ cái. Cặp số a và b là khóa. Nó tổng quát hóa các mật mã Caesar và Atbash và được dùng rộng rãi để giảng dạy toán học đằng sau mật mã học.
Mật mã Affine hoạt động như thế nào?
Mỗi chữ cái thường được biến thành một số (A = 0 đến Z = 25) và chạy qua E(x) = (a·x + b) mod 26: nhân với khóa a, cộng khóa b, lấy phần dư khi chia cho 26, rồi biến kết quả trở lại thành chữ cái. Phép nhân xáo trộn bảng chữ cái và phép cộng dịch nó dọc theo. Việc giải mã đảo ngược các bước bằng nghịch đảo mô-đun của a.
Hệ số nhân a có thể nhận những giá trị nào?
Hệ số nhân a phải nguyên tố cùng nhau với 26 — không chia sẻ thừa số nào với nó ngoài 1 — để mật mã có thể giải mã một cách duy nhất. Vì 26 = 2 × 13, điều đó loại ra mọi số chẵn và mọi bội số của 13 và để lại đúng mười hai giá trị: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, và 25. Công cụ chỉ cho bạn chọn từ những giá trị này, nên khóa của bạn luôn đảo ngược được.
Khóa a và b trong mật mã Affine là gì?
Chúng là hai con số định nghĩa mật mã. Hệ số nhân a, một trong mười hai giá trị nguyên tố cùng nhau với 26, kiểm soát cách bảng chữ cái bị xáo trộn bằng phép nhân, còn độ dịch b, bất kỳ số nào từ 0 đến 25, trượt kết quả dọc theo bảng chữ cái. Cả hai đều cần để mã hóa và giải mã; đổi một trong hai thì toàn bộ bảng chữ cái thay thế thay đổi.
Làm thế nào để giải mã một mật mã Affine?
Việc giải mã dùng D(y) = a⁻¹·(y − b) mod 26, trong đó a⁻¹ là nghịch đảo mô-đun của a — con số cho ra 1 khi nhân với a mod 26. Bạn trừ đi độ dịch, nhân với nghịch đảo, rồi rút gọn mod 26. Công cụ làm việc này tự động: chọn Giải mã, nhập đúng a và b đã dùng để mã hóa, và dán văn bản mã hóa để khôi phục thông điệp gốc.
Có thể cho một ví dụ mật mã Affine thực hành không?
Với a = 5 và b = 8, từ AFFINECIPHER mã hóa thành IHHWVCSWFRCP. Với chữ cái đầu tiên, A là 0, nên E(0) = (5·0 + 8) mod 26 = 8 = I; với F, là 5, E(5) = (5·5 + 8) mod 26 = 7 = H. Để giải mã, nghịch đảo mô-đun của 5 là 21, và D(8) = 21·(8 − 8) mod 26 = 0 = A, trả về văn bản gốc.
Mật mã Affine liên quan đến mật mã Caesar như thế nào?
Mật mã Caesar là trường hợp đặc biệt của mật mã Affine khi hệ số nhân a là 1. Với a = 1 công thức trở thành E(x) = (x + b) mod 26, một phép dịch thuần túy mọi chữ cái đi b vị trí. Đặt a = 1 và b = 3 trong công cụ tái tạo phép dịch Caesar kinh điển biến A into D, nên bạn có thể xem Caesar là một mật mã Affine không có bước nhân.
Mật mã Affine liên quan đến mật mã Atbash như thế nào?
Atbash là mật mã Affine với a = 25 và b = 25. Vì 25 bằng −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 và Z becomes A. Chọn những khóa đó trong công cụ và bảng chữ cái thay thế hiển thị phép đảo ngược đầy đủ, minh họa Atbash chỉ là một điểm trong không gian khóa của mật mã Affine.
Có bao nhiêu khóa mật mã Affine khả dĩ?
Có mười hai lựa chọn hợp lệ cho hệ số nhân a và hai mươi sáu cho độ dịch b, cho ra 312 tổ hợp khóa khả dĩ. Một trong số đó, a = 1 và b = 0, ánh xạ mọi chữ cái tới chính nó và để văn bản không thay đổi. Không gian khóa nhỏ này là lý do mật mã Affine có thể bị phá bằng cách thử mọi khóa — gọi là tấn công dùng sức — gần như tức thời.
Làm thế nào để phá mật mã Affine?
Hai phương pháp dễ áp dụng. Dùng sức thử cả 312 khóa và giữ lại khóa cho ra văn bản đọc được. Phân tích tần suất khai thác việc mật mã là thay thế đơn bảng: những chữ cái mã hóa phổ biến nhất có khả năng đại diện cho các chữ cái phổ biến như E và T. Nếu bạn đoán được chỉ hai ánh xạ chữ cái thường-tới-mã hóa, bạn thậm chí có thể giải trực tiếp hai phương trình để tìm a và b. Điều này khiến mật mã Affine thỏa mãn để phá như một câu đố.
Mật mã Affine có giữ khoảng trắng, số và dấu câu không?
Có. Chỉ 26 chữ cái A–Z được mã hóa; khoảng trắng, chữ số, dấu câu và các ký tự từ những bảng chữ cái khác đi qua không thay đổi, và công cụ giữ nguyên cách viết hoa gốc của bạn. Điều này nghĩa là bố cục thông điệp của bạn sống sót qua mã hóa, tiện cho câu đố nhưng cũng cho kẻ tấn công thêm manh mối, vì độ dài từ và cấu trúc vẫn hiển thị.
Văn bản của tôi có được tải lên máy chủ không?
Không. Toàn bộ việc mã hóa và giải mã diễn ra hoàn toàn trong trình duyệt của bạn, nên văn bản và khóa của bạn không bao giờ được tải lên, ghi lại hay lưu trữ. Ngay cả liên kết chia sẻ cũng giữ văn bản và thiết lập của bạn trong phần URL nằm sau dấu thăng, phần mà trình duyệt không bao giờ gửi đến máy chủ, nên thông điệp của bạn vẫn riêng tư cho đến khi bạn chọn chia sẻ liên kết.

Công cụ liên quan

Tiếp tục với những công cụ hữu ích này

Mật mã Caesar

Mật mã Vigenère

Mật mã Atbash

Mật mã Rail Fence

Mật mã Playfair

Mật mã Bacon