Công cụ Mã hóa Vigenère
Mã hóa và giải mã văn bản bằng mật mã đa chữ cái Vigenère sử dụng từ khóa do người dùng cung cấp để dịch chuyển mỗi chữ cái bằng một khoảng khác nhau. Xem trực tiếp dòng căn chỉnh khóa, trực quan hóa bảng tabula recta, các biến thể Autokey và Beaufort, kiểm tra vòng lặp đảo ngược, và gợi ý chu kỳ Kasiski.
Trình chặn quảng cáo đang ngăn chúng tôi hiển thị quảng cáo
MiniWebtool miễn phí nhờ quảng cáo. Nếu công cụ này hữu ích, hãy ủng hộ bằng Premium (không quảng cáo + nhanh hơn) hoặc cho phép MiniWebtool.com rồi tải lại trang.
- Hoặc nâng cấp Premium (không quảng cáo)
- Cho phép quảng cáo cho MiniWebtool.com, rồi tải lại
Giới thiệu về Công cụ Mã hóa Vigenère
Công cụ Mã hóa Vigenère này mã hóa và giải mã văn bản bằng mật mã đa bảng chữ cái, phương pháp từng chống lại việc bẻ khóa mật mã trong gần 300 năm. Nhập bất kỳ tin nhắn và từ khóa nào, bạn sẽ ngay lập tức nhận được bản mã cùng với một luồng căn chỉnh khóa xếp chồng theo chiều dọc hiển thị chữ cái văn bản thuần túy, chữ cái khóa và chữ cái mật mã cùng nhau — nhờ đó bạn có thể nhìn thấy lý do tại sao mọi chữ cái thay đổi. Công cụ này cũng hiển thị biến thể Autokey gốc, biến thể đối nghịch Beaufort được sử dụng trong máy Hagelin M-209 của Thế chiến II, bằng chứng chu trình khép kín và bảng tabula recta 26×26 để xác minh thủ công.
Ý tưởng từng bước
Lấy văn bản thuần túy ATTACKATDAWN và từ khóa LEMON. Lặp lại từ khóa bên dưới cho đến khi nó che hết văn bản thuần túy, sau đó cộng hai chữ cái theo từng vị trí (A=0, B=1, …, Z=25), giảm theo mô-đun 26.
Đọc hàng màu xanh lá cây sẽ cho bản mã LXFOPVEFRNHR. Chữ cái khóa L dịch chuyển A đi 11 vị trí (A→L), E dịch chuyển T đi 4 vị trí (T→X), và tiếp tục như vậy. Cùng một chữ cái văn bản thuần túy A xuất hiện ba lần nhưng mã hóa thành ba chữ cái khác nhau (L, O, E) — đó là thuộc tính đa bảng chữ cái và là lý do Vigenère đánh bại phân tích tần suất chữ cái đơn.
Phép toán trên một dòng
Đánh số bảng chữ cái từ A=0 đến Z=25. Gọi \( p_i \) là chữ cái văn bản thuần túy thứ i và \( k_i \) là chữ cái khóa tương ứng (từ khóa lặp lại theo chu kỳ, do đó \( k_i = K_{i \bmod n} \) với \( n \) là độ dài khóa). Khi đó:
Mã hóa: \( c_i = (p_i + k_i) \bmod 26 \) · Giải mã: \( p_i = (c_i - k_i) \bmod 26 \)
Đối với biến thể Beaufort, cùng một công thức trên một dòng \( c_i = (k_i - p_i) \bmod 26 \) sẽ xử lý cả hai hướng. Đối với biến thể Autokey, khóa sẽ trở thành \( k_1, k_2, \dots, k_n, p_1, p_2, \dots \) — chính văn bản thuần túy sẽ mở rộng khóa sau khi từ khóa ban đầu được dùng hết.
Giải thích ba biến thể
Bảng Tabula Recta (Bình phương Vigenère)
Cách cổ điển để áp dụng Vigenère là tra cứu từng chữ cái trong một bảng 26×26, trong đó hàng r là bảng chữ cái được xoay đi r vị trí. Tìm hàng của chữ cái khóa, tìm cột của chữ cái văn bản thuần túy — ô tại giao điểm chính là chữ cái bản mã. Để giải mã, tìm hàng của khóa, quét ngang sang chữ cái bản mã, rồi đọc tiêu đề cột.
| · | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | 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 |
| B | 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 | A |
| C | C | 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 |
| D | 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 |
| E | 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 | D |
| F | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E |
| G | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F |
| H | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G |
| I | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H |
| J | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I |
| K | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J |
| L | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K |
| M | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L |
| N | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M |
| O | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N |
| P | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| Q | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
| R | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q |
| S | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R |
| T | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S |
| U | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T |
| V | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U |
| W | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V |
| X | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W |
| Y | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X |
| Z | Z | 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 |
Nhãn hàng = chữ cái khóa. Tiêu đề cột = chữ cái văn bản thuần túy. Nội dung ô = chữ cái bản mã. Ví dụ: hàng L, cột A → L. Hàng E, cột T → X.
Cách sử dụng Công cụ Mã hóa Vigenère
- Dán văn bản thuần túy của bạn (để mã hóa) hoặc bản mã (để giải mã) vào hộp nhập liệu. Luồng căn chỉnh khóa trực tiếp ở bên phải hiển thị văn bản thuần túy, chữ cái khóa và chữ cái mật mã kết quả được xếp chồng theo chiều dọc, giúp thấy rõ độ dịch chuyển của từng ký tự chỉ trong một cái nhìn.
- Nhập một từ khóa vào trường Từ khóa. Các ký tự không phải chữ cái sẽ tự động được loại bỏ. Hãy xem chip từ khóa màu cam xoay vòng khi các chữ cái được tiêu thụ, và kính lúp "cặp ký tự mới nhất" phóng to cụm ba ký tự thuần túy + khóa = mật mã gần đây nhất.
- Chọn Chế độ (Mã hóa hoặc Giải mã) và Biến thể (Vigenère, Autokey hoặc Beaufort). Beaufort là tự nghịch đảo, do đó chế độ không làm thay đổi kết quả đầu ra của nó.
- Nhấp vào Áp dụng Vigenère. Kết quả đầy đủ sẽ xuất hiện bên dưới kèm theo dấu vết dịch chuyển từng chữ cái, số liệu thống kê (độ dài khóa, chu kỳ, độ bao phủ), bằng chứng chu trình khép kín và một phòng thử nghiệm mật mã song song so sánh mọi biến thể trên cùng một đầu vào.
- Sử dụng các nút Sao chép để lấy bản mã, bản gốc hoặc từ khóa. Để giải mã, hãy dán bản mã, chuyển Chế độ thành Giải mã với cùng một từ khóa và nhấp lại một lần nữa.
Vigenère so với Caesar so với Atbash so với ROT13 — Tham khảo nhanh
| Mật mã | Loại | Khóa | Tự nghịch đảo | "HELLO" với khóa LEMON |
|---|---|---|---|---|
| Vigenère | Thay thế đa bảng chữ cái | Từ khóa (1+ chữ cái) | Không (dùng Giải mã) | SIXZB |
| Caesar (dịch 3) | Xoay vòng đơn bảng chữ cái | Dịch chuyển đơn | Không | KHOOR |
| ROT13 | Xoay vòng (cố định 13) | Không có (cố định) | Có | URYYB |
| Atbash | Phản chiếu | Không có (cố định) | Có | SVOOL |
| Beaufort | Đa bảng chữ cái đối nghịch | Từ khóa | Có | EABDZ |
Tại sao Vigenère từng được gọi là "Le Chiffre Indéchiffrable"
Trong gần ba thế kỷ sau khi Bellaso xuất bản nó lần đầu tiên vào năm 1553, Vigenère được coi là không thể bẻ khóa. Một chữ cái văn bản thuần túy duy nhất có thể mã hóa thành tối đa 26 chữ cái bản mã khác nhau tùy thuộc vào vị trí của nó, vì vậy giả định tần suất phẳng làm sụp đổ Caesar (chữ E trong tiếng Anh là chữ cái phổ biến nhất) không còn hoạt động nữa. Charles Babbage đã bẻ khóa nó vào những năm 1850 nhưng không công bố; Friedrich Kasiski độc lập công bố cuộc tấn công vào năm 1863. Thông tin cốt lõi: từ khóa lặp lại, do đó cùng một chuỗi con văn bản thuần túy ở các vị trí khác nhau một khoảng là bội số của độ dài khóa sẽ tạo ra cùng một bản mã. Tìm khoảng cách của các cụm ba chữ cái lặp lại, lấy ước chung lớn nhất, và bạn có một ứng cử viên nặng ký cho độ dài khóa. Khi đã biết độ dài khóa, Vigenère phân rã thành n mật mã Caesar song song, mỗi mật mã trong số đó đều sụp đổ trước phân tích tần suất.
Phương pháp kiểm tra Kasiski — Cách Vigenère sụp đổ
- Quét bản mã để tìm các chuỗi 3 chữ cái hoặc 4 chữ cái lặp lại.
- Ghi lại khoảng cách giữa mỗi cặp lặp lại.
- Tìm ước chung lớn nhất (UCLN) của các khoảng cách đó — độ dài khóa hầu như luôn chia hết cho UCLN này.
- Chia bản mã thành n cột (mỗi chữ cái thứ n). Mỗi cột là một mật mã Caesar.
- Đối với mỗi cột, tìm độ dịch chuyển chữ cái giúp tối đa hóa chỉ số trùng khớp hoặc khớp với tần suất chữ cái tiếng Anh. Độ dịch chuyển đó là một chữ cái khóa.
Hãy thử ví dụ nhanh "Dễ tổn thương bởi Kasiski" để thấy điều này: đầu vào lặp lại cụm từ "The quick brown fox" và khóa chỉ có 3 chữ cái, do đó cùng một từ ngữ sẽ mã hóa theo cùng một cách trong cả hai lần — một dấu hiệu rõ ràng cho một nhà phân tích Kasiski.
Gia đình các cuộc tấn công Babbage / Kasiski / Friedman
- Babbage (Những năm 1850, không công bố). Phát hiện ra rằng các mẫu lặp lại tiết lộ độ dài khóa.
- Kasiski (1863). Công bố cùng một ý tưởng: khoảng cách giữa các lần lặp lại là bội số của độ dài khóa.
- Friedman (1922). Giới thiệu Chỉ số trùng khớp — một thước đo thống kê, đối với phân tách cột chính xác, sẽ đạt đỉnh ở khoảng ~0,067 (tiếng Anh) thay vì giá trị ngẫu nhiên ~0,038.
- Máy tính hiện đại. Chạy thử tất cả các độ dài khóa từ 1 đến 30, tính Chỉ số trùng khớp cho từng phân tách cột, chọn độ dài có phân tách đạt Chỉ số trùng khớp trung bình cao nhất. Sau đó tấn công tần suất vào từng cột. Tổng thời gian: vài mili giây.
Thông báo bảo mật
Vigenère không phải là mã hóa hiện đại. Khóa từ khóa 5 ký tự sẽ bị bẻ khóa trong vài mili giây bởi Kasiski, và khóa từ khóa 20 ký tự sẽ sụp đổ sau vài giây phân tích tự động. Ngay cả Autokey, giúp loại bỏ điểm yếu tuần hoàn, vẫn dễ bị tấn công bằng bản thuần đã biết và các cuộc tấn công từ dễ đoán vào tiền tố từ khóa. Không bao giờ sử dụng Vigenère để bảo vệ mật khẩu, dữ liệu cá nhân, thông tin tài chính hoặc bất kỳ thứ gì cần giữ bí mật. Để bảo vệ thực tế, hãy sử dụng AES-256, ChaCha20, RSA hoặc libsodium. Hãy coi Vigenère như một cách để che giấu văn bản — dành cho các câu đố, CTF, giảng dạy và trình diễn lịch sử — chứ không phải để bảo mật văn bản.
Mẹo để có kết quả tốt nhất
- Để giải mã, hãy dán bản mã, nhập cùng một từ khóa và chuyển Chế độ sang Giải mã. Cùng một công cụ thực hiện cả mã hóa và giải mã.
- Đối với biến thể Beaufort, chế độ không quan trọng — việc áp dụng Beaufort hai lần với cùng một khóa sẽ trả lại văn bản gốc.
- Nếu bạn chỉ quan tâm đến các chữ cái (không có khoảng trắng hoặc dấu câu ở đầu ra), hãy bỏ chọn "Giữ nguyên chữ hoa/thường gốc" — đầu vào sẽ được chuẩn hóa thành VIẾT HOA trước khi mã hóa và đầu ra sẽ chỉ có chữ in hoa.
- Khoảng trắng và dấu câu trong đầu vào được giữ nguyên không đổi. Để che giấu ranh giới từ ngữ đối với người đọc thông thường, hãy tự loại bỏ chúng trước khi dán.
- Sử dụng Phòng thử nghiệm mật mã để xem cùng một khóa hoạt động như thế nào trên cả ba biến thể — Autokey thường tạo ra đầu ra rất khác so với Vigenère cổ điển sau n chữ cái đầu tiên, vì luồng khóa thay đổi.
FAQ
Mật mã Vigenère là gì?
Mật mã Vigenère là một mật mã thay thế đa bảng chữ cái dịch chuyển mỗi chữ cái trong văn bản thuần túy đi một khoảng khác nhau được xác định bởi một từ khóa lặp đi lặp lại. Nếu chữ cái khóa là K (chữ cái thứ 11), chữ cái văn bản thuần túy sẽ dịch chuyển về phía trước 10 vị trí. Mật mã này được Giovan Battista Bellaso mô tả vào năm 1553 và sau đó bị gán nhầm cho Blaise de Vigenère, người mà tên tuổi đã gắn liền với nó.
Vigenère khác với Caesar hay Atbash như thế nào?
Caesar sử dụng một độ dịch chuyển cố định duy nhất cho mọi chữ cái — khóa Vigenère một chữ cái chính xác là Caesar. Vigenère sử dụng một độ dịch chuyển khác nhau cho mỗi vị trí, được lấy từ một từ khóa lặp đi lặp lại — đó là lý do tại sao cùng một chữ cái văn bản thuần túy có thể mã hóa thành nhiều chữ cái bản mã khác nhau. Atbash là một phép phản chiếu cố định (A↔Z, B↔Y) không có khóa. Vigenère khó bẻ khóa hơn nhiều bằng phương pháp phân tích tần suất chữ cái đơn vì khóa làm mượt các tần suất chữ cái.
Vigenère có an toàn cho việc mã hóa thực tế không?
Không. Friedrich Kasiski đã bẻ khóa Vigenère vào năm 1863 bằng cách khai thác tính tuần hoàn của từ khóa lặp đi lặp lại. Máy tính hiện đại bẻ khóa Vigenère ngay lập tức bằng cách sử dụng thử nghiệm Friedman (chỉ số trùng khớp) và kiểm tra Kasiski. Hãy sử dụng AES-256, ChaCha20 hoặc libsodium để bảo vệ thực tế; Vigenère chỉ dùng cho các câu đố, CTF và giảng dạy.
Biến thể Autokey là gì?
Autokey mở rộng từ khóa bằng cách nối thêm chính văn bản thuần túy, do đó luồng khóa không bao giờ lặp lại. Vigenère đã đề xuất điều này vào năm 1586 để đánh bại chính điểm yếu mà Kasiski sau này đã khai thác. Autokey khó bẻ khóa hơn nhiều so với Vigenère cổ điển nhưng vẫn dễ bị tấn công bằng bản thuần đã biết và tấn công từ dễ đoán vào tiền tố từ khóa.
Biến thể Beaufort là gì?
Mật mã Beaufort sử dụng phép toán bản_mã = (khóa − văn_bản_thuần) mod 26, điều này khiến nó trở thành nghịch đảo của chính nó — mã hóa hai lần với cùng một khóa sẽ trả lại văn bản gốc. It được đặt theo tên của Ngài Francis Beaufort và là mật mã đằng sau Hagelin M-209, một máy mật mã cơ học di động được Lục quân Hoa Kỳ sử dụng trong Thế chiến II.
Từ khóa của tôi nên dài bao nhiêu?
Càng dài càng tốt. Khóa một chữ cái sẽ biến Vigenère thành mật mã Caesar. Khóa ngắn (3–5 chữ cái) sẽ bị bẻ khóa trong vài giây bởi Kasiski. Một khóa có độ dài bằng chính tin nhắn và chỉ được sử dụng một lần là một đệm một lần (one-time pad) — được chứng minh là không thể bẻ khóa. Đối với các câu đố và giảng dạy, một từ khóa từ 6–12 chữ cái là lựa chọn thông thường.
Tham khảo nội dung, trang hoặc công cụ này như sau:
"Công cụ Mã hóa Vigenère" tại https://MiniWebtool.com/vi// từ MiniWebtool, https://MiniWebtool.com/
bởi đội ngũ MiniWebtool. Cập nhật: 2026-05-26