Bộ mã hóa Vigenère
Mật mã Vigenère, được Giovan Battista Bellaso mô tả lần đầu vào năm 1553 và về sau bị gán nhầm cho Blaise de Vigenère, dịch chuyển mỗi chữ cái một lượng khác nhau tùy theo một từ khóa lặp lại. Dù suốt 300 năm được gọi là “le chiffre indéchiffrable”, cuối cùng nó cũng bị phá vỡ bởi cuộc tấn công thống kê của Friedrich Kasiski vào năm 1863. Bộ mã hóa này cho phép bạn mã hóa và giải mã cho câu đố, thử thách CTF và mật mã học trong lớp học.
Cách dùng mật mã Vigenère
-
1
Nhập tin nhắn của bạn
Các chữ cái từ A đến Z được dịch chuyển; chữ số, khoảng trắng, dấu câu và mọi ký tự không phải Latin đều đi qua nguyên vẹn.
-
2
Đặt một từ khóa
Chọn bất kỳ từ hoặc cụm từ nào. Chỉ các chữ cái của nó được tính, và từ khóa dài thì khó phá hơn.
-
3
Chọn mã hóa hoặc giải mã
Cùng một công cụ xử lý cả hai chiều bằng bảng vuông Vigenère.
-
4
Đọc kết quả
Mỗi chữ cái dịch chuyển theo chữ cái từ khóa tương ứng (A=0, B=1, v.v.); chữ hoa và chữ thường được giữ nguyên.
Một ví dụ có lời giải
Công cụ khởi đầu với Hello World và khóa KEY. Mã hóa cho ra:
Gốc: Hello World
Khóa: KEYKE YKEYK
Mã: Rijvs Uyvjn
Lưu ý rằng chữ hoa/thường được giữ nguyên (H vẫn là chữ hoa và thành R), khoảng trắng được giữ lại, và con trỏ khóa chỉ tiến trên các chữ cái. Chuyển sang giải mã với cùng khóa đó, Rijvs Uyvjn trở lại thành Hello World.
Bảng vuông Vigenère
Mỗi chữ cái của văn bản và mỗi chữ cái của khóa chọn một hàng và một cột trong lưới 26x26 các phép dịch Caesar. Nếu chữ cái văn bản là H và chữ cái khóa là K, kết quả là R, vì H (7) + K (10) = 17 = R. Ví dụ kinh điển trong sách giáo khoa dùng một khóa lặp lại:
Gốc: ATTACKATDAWN
Khóa: LEMONLEMONLE
Mã: LXFOPVEFRNHR
Vì sao nó thắng các mật mã trước đó
Các mật mã đơn bảng như Caesar và Atbash luôn mã hóa E theo cùng một cách, nên chữ cái xuất hiện nhiều nhất trong bản mã sẽ để lộ chữ cái xuất hiện nhiều nhất trong bản rõ. Vigenère xoay vòng lượng dịch, nên E có thể thành X lần này và K lần sau, làm phẳng tần suất chữ cái và đánh bại phân tích đơn giản.
Tấn công Kasiski trong một đoạn
Những nhóm chữ cái lặp lại trong bản mã, cách nhau một khoảng cố định, gợi ý rằng độ dài khóa chia hết khoảng cách đó. Thu thập vài khoảng cách như vậy, lấy ước chung lớn nhất của chúng, và bạn có độ dài khóa khả dĩ. Chia bản mã thành bấy nhiêu luồng Caesar và áp dụng phân tích tần suất cho từng luồng.
Lưu ý bảo mật
Vigenère là một mật mã cổ điển chỉ có giá trị giáo dục. Nó không an toàn trước bất kỳ cuộc tấn công hiện đại nào: một văn bản tiếng Anh ngắn với khóa sáu chữ cái bị phá trong vài giây. Để bảo mật thực sự, hãy dùng AES-GCM hoặc ChaCha20-Poly1305 từ một thư viện đã được kiểm chứng, đừng bao giờ dùng mật mã làm bằng tay.
Câu hỏi thường gặp
Chỉ 26 chữ cái A-Z được dịch chuyển. Các chữ a-z không dấu trong tiếng Việt sẽ được mã hóa, nhưng các chữ có dấu (ă, â, đ, ê, ô, ơ, ư và các dấu thanh) đi qua nguyên vẹn, nên văn bản tiếng Việt chỉ được mã hóa một phần. Để mã hóa toàn bộ, hãy dùng chữ Latin không dấu.
Có. Văn bản chữ thường tạo ra kết quả chữ thường và chữ hoa vẫn là chữ hoa. Bản thân từ khóa không phân biệt hoa thường.
Chắc chắn rồi. Đây là món quen thuộc của CTF cho người mới. Gợi ý thường cho biết độ dài khóa trong đề bài hoặc để lại một nhóm chữ cái lặp lại trong bản mã.
Văn bản và khóa của bạn được gửi đến máy chủ của chúng tôi để tính toán mật mã, nơi chúng được xử lý và không được lưu hay ghi nhật ký. Vì Vigenère không an toàn, đừng bao giờ mã hóa một bí mật thật bằng bất kỳ mật mã cổ điển nào.
Công cụ liên quan
Mật mã số sang chữ
Chuyển số thành chữ cái và ngược lại bằng mật mã A=1, B=2 (A1Z26) cho câu đố, đố mẹo và manh mối escape room.
Bộ tạo mã API ngẫu nhiên
Tạo khóa API 8–128 ký tự trên máy chủ ở dạng hex, base64url hoặc chữ và số, hoặc tạo UUIDv4.
Bộ mã hóa mật mã Polybius
Mã hóa chữ cái Latinh thành tọa độ Polybius hoặc giải mã các cặp cách nhau bằng lưới I/J cố định 5×5.
Trình tạo mã băm (Hash)
Tạo các giá trị băm MD5, SHA-1, SHA-256, SHA-384, SHA-512 và CRC32 từ văn bản, kèm digest sẵn sàng để sao chép cho checksum và so sánh.
Bộ tạo mã SHA256
Tạo các giá trị hash SHA-256 từ bất kỳ văn bản nào. Kết quả là chuỗi thập lục phân 64 ký tự – sử dụng cùng một thuật toán như trong địa chỉ Bitcoin, chứng chỉ TLS và chữ ký JWT.
Bộ tạo MD5
Tạo giá trị hash MD5 từ bất kỳ văn bản hay tệp tin nào. Kết quả là giá trị 128 bit dưới dạng thập lục phân, được tính toán hoàn toàn ngay trong trình duyệt của bạn.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- Koder szyfru Vigenère [PL]
- เครื่องมือเข้ารหัส Vigenère [TH]
- Codificador de cifrado Vigenère [ES]
- ヴィジュネル暗号エンコーダー [JA]
- مشفّر فيجينير [AR]
- 비즈네르 암호 인코더 [KO]
- Encodeur de chiffre de Vigenère [FR]
- Vigenère-Verschlüsselungs-Encoder [DE]
- Penyandi Sandi Vigenère [ID]
- Codificador da cifra de Vigenère [PT]
- Vigenère-chifferkodare [SV]
- Vigenère-cijfercodeerder [NL]
- Vigenere Cipher Encoder [EN]
- Codificatore del cifrario di Vigenère [IT]
- Кодировщик шифра Виженера [RU]
- Vigenère Şifre Kodlayıcı [TR]
- 维吉尼亚密码编码器 [ZH]