Bộ mã hóa ROT13

ROT13 là cách che giấu văn bản đơn giản nhất vẫn còn được dùng: dịch mỗi chữ cái 13 vị trí trong bảng chữ cái, và áp dụng phép xoay đó thêm lần nữa sẽ đưa về nguyên bản. Đây là thứ Usenet từng dùng để giấu tình tiết phim, đáp án câu đố và những câu đùa nhạy cảm, và vẫn là cách tiện lợi để tạm che một đoạn văn bản khỏi ánh nhìn vô tình, nhưng không bao giờ dùng cho bí mật thật sự.

ROT13 hoạt động thế nào

  1. 1

    Lấy một chữ cái

    Chỉ A–Z và a–z. Chữ số, dấu câu và khoảng trắng được giữ nguyên.

  2. 2

    Dịch 13 vị trí về phía trước

    A thành N. M thành Z. N vòng lại về A.

  3. 3

    Áp dụng hai lần để giải mã

    Vì bảng chữ cái có 26 chữ, dịch 13 hai lần sẽ trở về nguyên bản.

Bảng ánh xạ

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

Vì sao là 13

Vì 13 = 26 ÷ 2, mã hóa và giải mã là cùng một phép toán. Không cần hàm mã hóa và hàm giải mã riêng; cùng một đoạn mã làm cả hai. Chính tính đối xứng này khiến ROT13 phổ biến trước khi các thư viện mật mã dành cho lập trình viên có mặt ở khắp nơi.

Nơi ROT13 thực sự hữu ích

  • Giấu tình tiết (spoiler): “Qbg Fabjonyy vf Ebo’f qnq.” đọc được sau khi bật, nhưng vô hại khi liếc qua.
  • Đáp án câu đố: xoay lời giải để không lộ ra dưới dạng văn bản thường.
  • Mẹo với gợi ý ô chữ: một số ứng dụng xoay gợi ý để tránh lộ đáp án ngoài ý muốn.
  • Che địa chỉ email trong HTML cũ: một mẹo nhẹ chống thu thập địa chỉ trước khi cách che dựa trên JavaScript trở nên phổ biến.

Nơi ROT13 hoàn toàn không phù hợp

  • Mật khẩu. Không phải mã hóa. Một cái liếc là lộ; mã tự động đảo ngược nó trong vài phần triệu giây.
  • Bí mật. Ai thấy “Guvf vf frperg” đều biết ngay bạn đã làm gì và cách hoàn tác.
  • Dữ liệu nhị phân. ROT13 chỉ động đến chữ cái; còn các khối nhị phân thì bị hỏng các ký tự khác.

Các biến thể

  • ROT5: chỉ chữ số, dịch 5. 0↔5, 1↔6, 2↔7, 3↔8, 4↔9. Cùng tính chất tự nghịch đảo.
  • ROT18: ROT13 cho chữ cái cộng ROT5 cho chữ số. Bao quát nội dung xen lẫn chữ và số.
  • ROT47: dịch các ký tự ASCII in được (33–126) đi 47. Đối xứng và bao gồm cả dấu câu, nhưng đầu ra trông như nhiễu.
  • Mật mã Caesar: dịch chung một lượng N. ROT13 là trường hợp đặc biệt tự nghịch đảo.

Ghi chú lịch sử

Quy ước Usenet xuất hiện đầu thập niên 1980 ở các nhóm tin như rec.humor, nơi người đọc có thể tùy chọn xoay các bài gắn nhãn spoiler. Nhiều trình đọc tin vẫn có tính năng “giải mã ROT13” chỉ bằng một phím. Cái tên “ROT13” đã đi vào các tài liệu RFC, nhưng chưa từng là một giao thức chính thức.

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

Về mặt kỹ thuật thì có, theo nghĩa mật mã Caesar, nhưng khóa của nó (13) dễ đoán và phép toán ai cũng biết. Hãy xem đây là cách che giấu, không phải bảo mật.

Không. Chỉ A–Z và a–z được dịch. Chữ số, khoảng trắng và ký hiệu đi qua nguyên vẹn.

Áp dụng ROT13 một lần nữa. Mã hóa và giải mã là cùng một phép toán vì 13 là một nửa của 26.

Có, hãy dùng bộ mã hóa mật mã Caesar cho bất kỳ lượng dịch nào từ 1 đến 25. ROT13 chỉ là trường hợp đặc biệt dịch 13.

Không. Văn bản của bạn chỉ được dùng để tạo ra kết quả đã xoay và không được giữ lại sau đó. Vì ROT13 là cách làm rối chứ không phải mã hóa, đừng bao giờ dán bất cứ điều gì thực sự bí mật vào bất kỳ công cụ ROT13 nào.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác