Mật mã Caesar
Mã hóa, giải mã và phá mật mã dịch chuyển Caesar cổ điển. Chọn mức dịch chuyển bất kỳ từ 1 đến 25, chuyển nhanh sang ROT13, ROT5 hoặc ROT47, hoặc để chế độ Phá mã thử cả 25 mức dịch chuyển và tự động phát hiện mức khả dĩ nhất. Mọi thứ đều chạy trong trình duyệt của bạn.
Dịch chuyển
Nhập văn bản ở trên để xem kết quả tại đây.
Ánh xạ bảng chữ cái
Thường
Mã hóa
Cách sử dụng Mật mã Caesar
- 1
Chọn mã hóa, giải mã hoặc phá mã
Mã hóa văn bản thường thành văn bản mã hóa, giải mã văn bản mã hóa trở lại thành văn bản thường, hoặc chuyển sang Phá mã để giải một thông điệp khi bạn không biết mức dịch chuyển.
- 2
Chọn mức dịch chuyển hoặc cài đặt sẵn
Đặt mức dịch chuyển bất kỳ từ 1 đến 25 bằng nút cộng và trừ, hoặc nhấn một cài đặt sẵn: ROT13 cho mức dịch chuyển chữ cái cổ điển là 13, ROT5 cho chữ số, hoặc ROT47 cho mọi ký hiệu in được.
- 3
Nhập văn bản của bạn
Nhập hoặc dán thông điệp của bạn. Mật mã chạy tự động khi bạn gõ, dịch chuyển mỗi chữ cái dọc theo bảng chữ cái đúng bằng mức bạn đã đặt, trong khi số và dấu câu được giữ nguyên.
- 4
Phá một thông điệp mà không cần khóa
Ở chế độ Phá mã, hãy dán văn bản mã hóa và công cụ sẽ giải mã nó với cả 25 mức dịch chuyển, rồi dùng phân tích tần suất chữ cái để làm nổi bật văn bản thường khả dĩ nhất cho bạn.
- 5
Sao chép, tải xuống hoặc chia sẻ
Sao chép kết quả vào bộ nhớ tạm, 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 văn bản và thiết lập của bạn, sẵn sàng để dùng.
Tìm hiểu về mật mã Caesar
Mật mã Caesar là gì?
Mật mã Caesar là một mật mã thay thế, mã hóa thông điệp bằng cách dịch chuyển mỗi chữ cái đi một số vị trí cố định dọc theo bảng chữ cái. Nó được đặt theo tên vị tướng La Mã Julius Caesar, người được cho là đã dùng mức dịch chuyển ba để bảo vệ thư từ riêng tư và quân sự của mình. Vì mỗi chữ cái luôn được thay bằng cùng một chữ thay thế, mật mã Caesar là ví dụ đơn giản nhất và được giảng dạy rộng rãi nhất của mật mã học cổ điển, và nó vẫn là điểm khởi đầu hoàn hảo để học cách mã hóa hoạt động.
Ngày nay mật mã Caesar xuất hiện trong các câu đố, phòng thoát hiểm, các thử thách capture-the-flag và bài tập lập trình cho người mới bắt đầu. Biến thể nổi tiếng nhất của nó, ROT13, vẫn được dùng khắp web để che spoiler, câu chốt hài và đáp án ngay trước mắt.
Mã hóa Caesar hoạt động như thế nào
Để mã hóa, bạn chọn một giá trị dịch chuyển, gọi là khóa, từ 1 đến 25. Mỗi chữ cái trong thông điệp của bạn sau đó tiến về phía trước trong bảng chữ cái đúng bằng số vị trí đó, vòng từ Z trở lại A khi vượt quá điểm cuối. Việc giải mã đảo ngược quá trình, dịch chuyển mỗi chữ cái lùi lại đúng bằng lượng đó. Khoảng trắng, chữ số và dấu câu thường được giữ nguyên, đó là lý do hình dạng và độ dài của thông điệp gốc vẫn lộ rõ trong văn bản mã hóa.
Ví dụ, với mức dịch chuyển ba, chữ A trở thành D, B trở thành E, và từ HELLO biến thành KHOOR. Để đọc thông điệp, người nhận chỉ cần biết một giá trị dịch chuyển duy nhất và lùi mỗi chữ cái ba vị trí.
Ví dụ thực hành: mức dịch chuyển ba
Lấy cụm từ kinh điển ATTACK AT DAWN và áp dụng chính mức dịch chuyển ba của Caesar. A ánh xạ sang D, T ánh xạ sang W, C ánh xạ sang F, K ánh xạ sang N, và cứ thế, tạo ra văn bản mã hóa DWWDFN DW GDZQ. Lưu ý rằng các khoảng trắng vẫn nằm nguyên vị trí và các chữ cái lặp lại luôn mã hóa thành cùng một ký tự, nên cặp T đôi trong ATTACK trở thành cặp W đôi. Đảo ngược mức dịch chuyển sẽ biến DWWDFN DW GDZQ trở lại thẳng thành ATTACK AT DAWN.
Công thức của mật mã Caesar
Về mặt toán học, mỗi chữ cái được coi là một con số từ 0 đến 25, trong đó A là 0 và Z là 25. Mã hóa được viết là E(x) = (x + n) mod 26 và giải mã là D(x) = (x - n) mod 26, trong đó x là vị trí của chữ cái và n là mức dịch chuyển. Phép mod 26 chính là điều khiến bảng chữ cái vòng lại, nên dịch chuyển Y đi ba vị trí sẽ rơi vào B thay vì chạy vượt quá điểm cuối của bảng chữ cái.
Giải thích ROT13, ROT5 và ROT47
ROT13 là một mật mã Caesar bị khóa ở mức dịch chuyển mười ba. Vì mười ba đúng bằng một nửa của hai mươi sáu, áp dụng ROT13 hai lần sẽ trả về văn bản gốc, nên một thao tác duy nhất vừa mã hóa vừa giải mã. ROT5 áp dụng ý tưởng tương tự cho mười chữ số 0 đến 9, khiến nó tiện lợi để che giấu con số, trong khi ROT47 xoay tất cả 94 ký tự ASCII in được cùng nhau, xáo trộn chữ cái, chữ số và dấu câu cùng một lúc. Mỗi loại trong số này đều tự nghịch đảo, đó chính là điều khiến chúng rất tiện lợi để nhanh chóng che giấu và để lộ những đoạn văn bản ngắn.
Làm thế nào để phá một mật mã Caesar
Mật mã Caesar chỉ có 25 khóa khả dĩ, điều này khiến nó dễ bị phá đến mức tầm thường. Phương pháp trực tiếp nhất là tấn công vét cạn: giải mã thông điệp với mọi mức dịch chuyển từ 1 đến 25 và đọc kết quả nào có nghĩa. Một cách tiếp cận khôn ngoan hơn là phân tích tần suất, so sánh phân bố chữ cái của mỗi ứng viên với tần suất thông thường của tiếng Anh, nơi E, T và A là những chữ cái phổ biến nhất, rồi tự động chọn kết quả khớp nhất. Chế độ Phá mã trong công cụ này làm cả hai cho bạn, liệt kê cả 25 bản giải mã và làm nổi bật đáp án khả dĩ nhất bằng điểm chi bình phương.
Lược sử mật mã Caesar
Mật mã này lấy tên từ Julius Caesar, người mà theo nhà sử học Suetonius đã dịch chuyển mỗi chữ cái ba vị trí để giữ kín thông điệp của mình vào khoảng năm 50 trước Công nguyên. Augustus, người kế nhiệm ông, được cho là đã dùng một phương thức tương tự với mức dịch chuyển một. Trong nhiều thế kỷ, một phép dịch chữ cái đơn giản đã đủ an toàn, phần lớn vì có quá ít người biết đọc, nói gì đến việc phân tích một thông điệp đã mã hóa. Điểm yếu của nó đã được hiểu rõ vào thế kỷ thứ chín, khi nhà toán học Ả Rập Al-Kindi mô tả phân tích tần suất, chính kỹ thuật ngày nay phá vỡ mật mã này trong vài giây.
Mật mã Caesar có an toàn không?
Không. Chỉ với 25 khóa, một mật mã Caesar có thể bị phá bằng tay trong vài phút và bằng máy tính trong tích tắc, nên nó không bảo vệ được bất cứ thứ gì thực sự cần giữ bí mật. Giá trị của nó ngày nay mang tính giáo dục và giải trí: đó là cách lý tưởng để học từ vựng của mật mã học, chẳng hạn như văn bản thường, văn bản mã hóa, khóa, mã hóa và phân tích mật mã, cùng một khối xây dựng thú vị cho các câu đố, trò chơi và dự án lập trình. Để có sự an toàn thực sự, người ta dùng các thuật toán hiện đại như AES thay thế.
Bảng tra mật mã Caesar: cả 25 mức dịch chuyển
Bảng tham khảo này liệt kê bảng chữ cái mã hóa cho mọi mức dịch chuyển Caesar từ 1 đến 25. Tìm mức dịch chuyển của bạn ở cột bên trái, rồi đọc ngang qua: hàng đó cho thấy các chữ cái thường A đến Z biến thành gì. Hàng được làm nổi bật là ROT13, mức dịch chuyển 13 vừa mã hóa vừa giải mã.
| Dịch chuyển | Bảng chữ cái mã hóa (A to Z) |
|---|---|
| 1 | BCDEFGHIJKLMNOPQRSTUVWXYZA |
| 2 | CDEFGHIJKLMNOPQRSTUVWXYZAB |
| 3 | DEFGHIJKLMNOPQRSTUVWXYZABC |
| 4 | EFGHIJKLMNOPQRSTUVWXYZABCD |
| 5 | FGHIJKLMNOPQRSTUVWXYZABCDE |
| 6 | GHIJKLMNOPQRSTUVWXYZABCDEF |
| 7 | HIJKLMNOPQRSTUVWXYZABCDEFG |
| 8 | IJKLMNOPQRSTUVWXYZABCDEFGH |
| 9 | JKLMNOPQRSTUVWXYZABCDEFGHI |
| 10 | KLMNOPQRSTUVWXYZABCDEFGHIJ |
| 11 | LMNOPQRSTUVWXYZABCDEFGHIJK |
| 12 | MNOPQRSTUVWXYZABCDEFGHIJKL |
| 13 · ROT13 | NOPQRSTUVWXYZABCDEFGHIJKLM |
| 14 | OPQRSTUVWXYZABCDEFGHIJKLMN |
| 15 | PQRSTUVWXYZABCDEFGHIJKLMNO |
| 16 | QRSTUVWXYZABCDEFGHIJKLMNOP |
| 17 | RSTUVWXYZABCDEFGHIJKLMNOPQ |
| 18 | STUVWXYZABCDEFGHIJKLMNOPQR |
| 19 | TUVWXYZABCDEFGHIJKLMNOPQRS |
| 20 | UVWXYZABCDEFGHIJKLMNOPQRST |
| 21 | VWXYZABCDEFGHIJKLMNOPQRSTU |
| 22 | WXYZABCDEFGHIJKLMNOPQRSTUV |
| 23 | XYZABCDEFGHIJKLMNOPQRSTUVW |
| 24 | YZABCDEFGHIJKLMNOPQRSTUVWX |
| 25 | ZABCDEFGHIJKLMNOPQRSTUVWXY |
Câu hỏi thường gặp
Mật mã Caesar là gì?
ROT13 là gì?
ROT5 và ROT47 là gì?
Làm sao để giải mã một thông điệp khi không biết mức dịch chuyển?
Bộ giải tự động hoạt động như thế nào?
Nó có thay đổi số, khoảng trắng hay dấu câu không?
Công thức của mật mã Caesar là gì?
Có bao nhiêu mức dịch chuyển khả dĩ, và nó có an toàn không?
Tại sao Julius Caesar lại dùng mức dịch chuyển ba?
Văn bản của tôi có được tải lên máy chủ không?
Làm sao để biết một thông điệp có phải là mật mã Caesar không?
Sự khác biệt giữa mật mã Caesar và ROT13 là gì?
Sự khác biệt giữa mật mã Caesar và mật mã Vigenère là gì?
Bạn có thể đưa ra vài ví dụ mật mã Caesar kèm lời giải không?
Mật mã Caesar còn có những tên gọi nào khác?
Làm thế nào để viết một mật mã Caesar bằng mã lập trình?
Công cụ liên quan
Tiếp tục với những công cụ hữu ích này