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ã 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

3
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.

Ánh xạ bảng chữ cái

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

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

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

  1. 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. 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. 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. 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. 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ểnBảng chữ cái mã hóa (A to Z)
1BCDEFGHIJKLMNOPQRSTUVWXYZA
2CDEFGHIJKLMNOPQRSTUVWXYZAB
3DEFGHIJKLMNOPQRSTUVWXYZABC
4EFGHIJKLMNOPQRSTUVWXYZABCD
5FGHIJKLMNOPQRSTUVWXYZABCDE
6GHIJKLMNOPQRSTUVWXYZABCDEF
7HIJKLMNOPQRSTUVWXYZABCDEFG
8IJKLMNOPQRSTUVWXYZABCDEFGH
9JKLMNOPQRSTUVWXYZABCDEFGHI
10KLMNOPQRSTUVWXYZABCDEFGHIJ
11LMNOPQRSTUVWXYZABCDEFGHIJK
12MNOPQRSTUVWXYZABCDEFGHIJKL
13 · ROT13NOPQRSTUVWXYZABCDEFGHIJKLM
14OPQRSTUVWXYZABCDEFGHIJKLMN
15PQRSTUVWXYZABCDEFGHIJKLMNO
16QRSTUVWXYZABCDEFGHIJKLMNOP
17RSTUVWXYZABCDEFGHIJKLMNOPQ
18STUVWXYZABCDEFGHIJKLMNOPQR
19TUVWXYZABCDEFGHIJKLMNOPQRS
20UVWXYZABCDEFGHIJKLMNOPQRST
21VWXYZABCDEFGHIJKLMNOPQRSTU
22WXYZABCDEFGHIJKLMNOPQRSTUV
23XYZABCDEFGHIJKLMNOPQRSTUVW
24YZABCDEFGHIJKLMNOPQRSTUVWX
25ZABCDEFGHIJKLMNOPQRSTUVWXY

Câu hỏi thường gặp

Mật mã Caesar là gì?
Mật mã Caesar là một trong những phương pháp mã hóa lâu đời nhất được biết đến, đặt theo tên Julius Caesar, người đã dùng nó để bảo vệ các thông điệp quân sự. Nó thay mỗi chữ cái bằng một chữ cái khác nằm sau nó một số vị trí cố định trong bảng chữ cái. Ví dụ, mức dịch chuyển 3 sẽ biến A thành D và B thành E, vòng từ Z trở lại A.
ROT13 là gì?
ROT13 là mật mã Caesar với mức dịch chuyển 13. Vì bảng chữ cái có 26 chữ, dịch chuyển 13 hai lần sẽ trả về văn bản gốc, nên cùng một thao tác vừa mã hóa vừa giải mã. Nó thường được dùng trực tuyến để che spoiler, câu chốt hài và đáp án câu đố, chứ không nhằm mục đích bảo mật thực sự.
ROT5 và ROT47 là gì?
ROT5 xoay các chữ số 0 đến 9 đi năm vị trí và không động đến chữ cái, nên rất tiện để che giấu các con số. ROT47 xoay toàn bộ 94 ký tự ASCII in được, bao gồm chữ cái, chữ số và dấu câu, đi 47 vị trí. Cả hai đều tự nghịch đảo, nghĩa là cùng một thao tác vừa mã hóa vừa giải mã, giống như ROT13.
Làm sao để giải mã một thông điệp khi không biết mức dịch chuyển?
Chuyển sang chế độ Phá mã và dán văn bản mã hóa. Công cụ sẽ giải mã nó với mọi mức dịch chuyển từ 1 đến 25 và xếp hạng các kết quả, 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. Vì chỉ có 25 mức dịch chuyển khả dĩ, mật mã Caesar có thể bị phá nhanh chóng và dễ dàng theo cách này.
Bộ giải tự động hoạt động như thế nào?
Với mỗi mức trong số 25 mức dịch chuyển khả dĩ, bộ giải sẽ giải mã văn bản và đo xem phân bố chữ cái của nó khớp với tiếng Anh thông thường đến mức nào bằng điểm chi bình phương. Mức dịch chuyển mà bản giải mã trông giống tiếng Anh nhất sẽ được hiển thị là phỏng đoán tốt nhất. Bạn cung cấp càng nhiều văn bản, việc phát hiện càng đáng tin cậy.
Nó có thay đổi số, khoảng trắng hay dấu câu không?
Ở chế độ Caesar tiêu chuẩn và ROT13, chỉ các chữ cái A đến Z được dịch chuyển, và mỗi chữ giữ nguyên dạng hoa hoặc thường, trong khi chữ số, khoảng trắng và dấu câu được giữ nguyên không đổi. ROT5 chỉ dịch chuyển chữ số, còn ROT47 cố ý dịch chuyển cả chữ cái, chữ số và ký hiệu cùng nhau.
Công thức của mật mã Caesar là gì?
Mã hóa 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 một chữ cái từ 0 đến 25 và n là mức dịch chuyển. Phép mod 26 giữ kết quả nằm trong bảng chữ cái, đó là điều khiến các chữ cái vòng từ Z trở lại A.
Có bao nhiêu mức dịch chuyển khả dĩ, và nó có an toàn không?
Chỉ có 25 mức dịch chuyển hữu ích, vì mức dịch chuyển 0 hoặc 26 sẽ giữ nguyên văn bản. Không gian khóa nhỏ bé đó có nghĩa là bất kỳ ai cũng có thể thử hết tất cả trong vài giây, nên ngày nay mật mã Caesar không mang lại sự an toàn thực sự và tốt nhất nên được xem như một công cụ giải trí, học tập hoặc giải đố.
Tại sao Julius Caesar lại dùng mức dịch chuyển ba?
Theo nhà sử học La Mã Suetonius, Caesar đã dịch chuyển mỗi chữ cái ba vị trí để che giấu thư từ của mình. Mức dịch chuyển cố định là 3 đã đủ trong một thời đại mà phần lớn kẻ thù thậm chí còn không biết đọc, nói gì đến việc phân tích mật mã, đó là lý do vì sao phương thức đơn giản này vẫn mang tên ông sau hai nghìn năm.
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, giải mã và phá mã diễn ra hoàn toàn trong trình duyệt của bạn, nên văn bản 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 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 nó vẫn riêng tư cho đến khi bạn chọn chia sẻ.
Làm sao để biết một thông điệp có phải là mật mã Caesar không?
Mật mã Caesar giữ nguyên độ dài từ, khoảng cách và dấu câu của bản gốc, nên văn bản trông giống ngôn ngữ thật với các chữ cái bị tráo đổi. Một dấu hiệu rõ ràng là mẫu hình tần suất chữ cái: vì mọi chữ cái đều dịch chuyển cùng một lượng, đường cong tần suất thông thường của tiếng Anh chỉ đơn giản trượt dọc theo bảng chữ cái, nên một chữ cái nào đó cuối cùng sẽ chiếm ưu thế theo cách mà E thường có. Nếu chuyển sang chế độ Phá mã và thử cả 25 mức dịch chuyển mà tạo ra văn bản đọc được ở đúng một mức dịch chuyển, thì gần như chắc chắn đó là mật mã Caesar. Nếu không có mức dịch chuyển đơn lẻ nào hiệu quả, thông điệp có thể dùng một phương pháp khác như mật mã Vigenère hoặc một mật mã thay thế hỗn hợp.
Sự khác biệt giữa mật mã Caesar và ROT13 là gì?
ROT13 đơn giản là một mật mã Caesar với mức dịch chuyển cố định ở 13. Mật mã Caesar tổng quát cho phép bạn chọn bất kỳ mức dịch chuyển nào từ 1 đến 25, trong khi ROT13 luôn dùng 13. Vì 13 đúng bằng một nửa của 26, ROT13 tự nghịch đảo: chạy văn bản qua nó hai lần sẽ trả về bản gốc, nên một thao tác vừa mã hóa vừa giải mã. Mật mã Caesar với bất kỳ mức dịch chuyển nào khác cần mức dịch chuyển ngược lại để giải mã.
Sự khác biệt giữa mật mã Caesar và mật mã Vigenère là gì?
Mật mã Caesar dùng một mức dịch chuyển cố định cho toàn bộ thông điệp, nên nó chỉ có 25 khóa khả dĩ và dễ bị phá. Mật mã Vigenère dùng một từ khóa để áp dụng một mức dịch chuyển khác nhau cho từng chữ cái theo lượt, điều này che giấu mẫu hình tần suất chữ cái và khiến việc phá mã khó hơn nhiều. Trên thực tế, Vigenère là một chuỗi các mật mã Caesar luân phiên theo các chữ cái của khóa, đó là lý do nó từ lâu được gọi là le chiffre indéchiffrable, mật mã không thể giải.
Bạn có thể đưa ra vài ví dụ mật mã Caesar kèm lời giải không?
Với mức dịch chuyển 3, HELLO trở thành KHOOR và thông điệp ATTACK AT DAWN trở thành DWWDFN DW GDZQ. Phương châm của Caesar VENI VIDI VICI mã hóa thành YHQL YLGL YLFL, và cụm từ ET TU BRUTE trở thành HW WX EUXWH. Để giải mã bất kỳ ví dụ nào trong số này, hãy áp dụng mức dịch chuyển ngược lại của 3 trong chế độ Giải mã, hoặc dán văn bản mã hóa vào chế độ Phá mã và để bộ giải tìm mức dịch chuyển cho bạn.
Mật mã Caesar còn có những tên gọi nào khác?
Mật mã Caesar còn được gọi là mật mã dịch chuyển, phép dịch chuyển Caesar, mã của Caesar, hay đơn giản là mã Caesar, bởi mỗi chữ cái được dịch đi một lượng cố định. Một số mức dịch chuyển cụ thể có tên riêng: mức dịch chuyển 13 là ROT13, mức dịch chuyển 1 đôi khi được gọi là August cipher theo tên Augustus, người kế nhiệm Caesar, còn họ rộng hơn của các mật mã xoay cố định được viết là ROT-N. Tất cả đều hoạt động theo cùng một cách và được giải mã bằng công cụ này.
Làm thế nào để viết một mật mã Caesar bằng mã lập trình?
Thuật toán này ngắn gọn trong bất kỳ ngôn ngữ nào. Lặp qua từng ký tự và kiểm tra xem nó có phải là chữ cái không; nếu phải, trừ đi mã của A để có một con số từ 0 đến 25, cộng mức dịch chuyển, lấy phần dư sau khi chia cho 26 để bảng chữ cái vòng lại, rồi cộng lại mã của A và biến con số thành một ký tự. Các ký tự không phải chữ cái được sao chép qua mà không đổi. Trong Python các hàm ord và chr xử lý việc chuyển đổi, và trong JavaScript thì charCodeAt và fromCharCode làm điều tương tự, đó chính xác là cách công cụ chạy trong trình duyệt này hoạt động.

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ã Vigenère

Mật mã Atbash

Mật mã Rail Fence

Mật mã Playfair

Mật mã Affine

Mật mã Bacon