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
- Chọn một giá trị dịch (shift) từ 1 → 25.
- 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.
- 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
Kết quả
Log từng bước
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