Caesar Cipher là gì? Giải thích dễ hiểu kèm demo mã hóa – giải mã từng ký tự

Caesar Cipher là một trong những thuật toán mã hóa cổ điển đơn giản nhất, thường được dùng để giới thiệu khái niệm substitution cipher (mã hóa thay thế ký tự). Dù ngày nay không còn an toàn, nó lại cực kỳ hữu ích để hiểu nguyên lý cơ bản của mật mã học.

Caesar Cipher là gì? Giải thích dễ hiểu kèm demo mã hóa – giải mã từng ký tự

Bài viết này giúp bạn nắm ý tưởng Caesar Cipher, cách hoạt động, độ an toàn thực tế và kèm một demo trực quan bằng JavaScript + UIkit cho phép bạn nhập văn bản, chọn độ dịch (shift) và xem kết quả mã hóa – giải mã theo thời gian thực.

Caesar Cipher giải bài toán gì?

Bài toán:

  • Cho một đoạn văn bản plaintext.
  • Cần mã hóa văn bản bằng cách dịch chuyển mỗi ký tự một số bước trong bảng chữ cái.

Ví dụ: dịch 3 ký tự (shift = 3)

  • A → D
  • B → E
  • X → A (vòng lại từ đầu)

Khi cần giải mã, chỉ cần dịch ngược lại.

Ý tưởng chính của Caesar Cipher

  1. Chọn một giá trị dịch (shift) từ 1 → 25.
  2. Với mỗi ký tự trong chuỗi:
    • Nếu là chữ cái: dịch sang phải (mã hóa) hoặc sang trái (giải mã).
    • Nếu là ký tự khác (số, dấu cách, dấu câu…) → giữ nguyên.
  3. Nối lại thành chuỗi đã mã hóa.

Caesar Cipher được xem là thuật toán rất yếu nhưng phù hợp để học cách mã hóa ký tự và làm quen với tư duy mật mã.

Demo: Mã hóa – giải mã với Caesar Cipher (UIkit + JavaScript)

Demo dưới đây cho phép bạn:

  • Nhập văn bản.
  • Chọn mode: Mã hóa hoặc Giải mã.
  • Chọn độ dịch (shift) từ 1 → 25.
  • Xem từng ký tự được dịch chuyển theo thời gian thực.

Demo: Caesar Cipher

Shift:3

Kết quả

Chưa có kết quả.

Log từng bước

Chưa chạy thuật toán.

Ví dụ mã hóa nhanh

Với shift = 3:

HELLO → KHOOR
ABCXYZ → DEFABC

Đoạn code xử lý chính

function caesarCipher(str, shift, mode) {
  var result = "";
  var log = [];

  // chỉnh hướng dịch
  shift = mode === "encrypt" ? shift : -shift;

  for (var i = 0; i < str.length; i++) { var ch = str[i]; var code = str.charCodeAt(i); if (code >= 65 && code <= 90) { // A-Z var shifted = ((code - 65 + shift + 26) % 26) + 65; result += String.fromCharCode(shifted); log.push(ch + " → " + String.fromCharCode(shifted)); } else if (code >= 97 && code <= 122) {
      // a-z
      var shifted2 = ((code - 97 + shift + 26) % 26) + 97;
      result += String.fromCharCode(shifted2);
      log.push(ch + " → " + String.fromCharCode(shifted2));
    }
    else {
      result += ch;
      log.push(ch + " (giữ nguyên)");
    }
  }

  return { result, log };
}

Caesar Cipher mạnh hay yếu?

Rất yếu – chỉ có 25 khả năng shift, meaning:

  • Brute-force 25 lần là giải được.
  • Không có key phức tạp.

Trong thực tế, Caesar Cipher chỉ dùng để học thuật toán mã hóa cơ bản, không dùng cho bảo mật thật.

Kết luận

Caesar Cipher là thuật toán cực kỳ đơn giản nhưng lại mở ra cả một thế giới về mật mã học. Hiểu được cách mã hóa – giải mã từng ký tự giúp bạn dễ dàng bước sang các kỹ thuật mạnh hơn như Vigenère Cipher, hashing, AES, RSA…

Trong bài tiếp theo của series “Thuật toán mã hóa & bảo mật cơ bản”, chúng ta sẽ khám phá Vigenère Cipher – phiên bản nâng cấp mạnh hơn của Caesar Cipher.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...