T

Text Machine

Công cụ văn bản mạnh mẽ, ngay trong trình duyệt của bạn

Mật mã Vigenère

Mã hóa và giải mã mật mã Vigenère với từ khóa do bạn chọn. Chuyển đổi giữa Vigenère cổ điển, biến thể Autokey và Beaufort, theo dõi từng bước trên bảng tabula recta tương tác, rồi sao chép, tải xuống hoặc chia sẻ kết quả. Mọi thứ đều chạy trong trình duyệt của bạn.

Từ khóa

Vigenère cổ điển: từ khóa lặp lại trên toàn bộ thông điệp, thêm một mức dịch chuyển khác nhau cho mỗi chữ cái.

Văn bản thường
Văn bản mã hóa

Nhập văn bản ở trên để xem kết quả tại đây.

Tabula recta (ô vuông Vigenère)

Tìm chữ cái khóa của bạn ở cột bên trái và chữ cái thường của bạn dọc theo hàng trên cùng; ô nơi chúng gặp nhau là chữ cái mã hóa. Các hàng ứng với những chữ cái trong từ khóa của bạn được làm nổi bậ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

Cách sử dụng Mật mã Vigenère

  1. 1

    Chọn mã hóa hoặc giải mã

    Chọn Mã hóa để biến văn bản thường thành văn bản mã hóa, hoặc Giải mã để biến văn bản mã hóa trở lại thành văn bản thường bằng cùng một từ khóa.

  2. 2

    Chọn một biến thể mật mã

    Chọn Vigenère cổ điển, Autokey mạnh hơn với khóa không bao giờ lặp lại, hoặc biến thể Beaufort tự nghịch đảo. Một gợi ý ngắn dưới từ khóa giải thích từng biến thể.

  3. 3

    Nhập từ khóa của bạn

    Nhập một từ khóa như LEMON. Chỉ các chữ cái A đến Z trong từ khóa được sử dụng, và nó được lặp lại hoặc mở rộng tự động để khớp với thông điệp của bạn.

  4. 4

    Nhập hoặc dán văn bản của bạn

    Nhập thông điệp của bạn và mật mã chạy ngay khi bạn gõ. Các chữ cái được mã hóa trong khi khoảng trắng, chữ số và dấu câu được giữ nguyên không đổi.

  5. 5

    Sao chép, tải xuống hoặc chia sẻ

    Sao chép kết quả, tải xuống dưới dạng tệp văn bản, hoặc chia sẻ một liên kết mở lại công cụ với đúng từ khóa, văn bản và thiết lập của bạn, sẵn sàng để dùng.

Tìm hiểu về mật mã Vigenère

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, mã hóa văn bản bằng một từ khóa. Thay vì dịch chuyển mọi chữ cái đi cùng một lượng cố định như mật mã Caesar làm, nó dùng mỗi chữ cái của từ khóa để áp dụng một mức dịch chuyển khác nhau cho mỗi chữ cái của thông điệp, lặp đi lặp lại từ khóa hết vòng này đến vòng khác. Vì cùng một chữ cái thường có thể trở thành nhiều chữ cái mã hóa khác nhau tùy theo vị trí của nó, mật mã này che giấu mẫu hình tần suất chữ cái đơn, điều khiến các mật mã đơn giản dễ bị phá đến vậy.

Trong khoảng ba thế kỷ nó được xem là không thể phá, mang lại biệt danh tiếng Pháp le chiffre indéchiffrable, mật mã không thể giải. Ngày nay nó là một mục được ưa chuộng trong các câu đố, phòng thoát hiểm và thử thách capture-the-flag, đồng thời là một bài học kinh điển về cách một khóa làm cho mật mã mạnh hơn.

Mã hóa Vigenère hoạt động như thế nào

Trước tiên bạn chọn một từ khóa, chẳng hạn LEMON. Từ khóa được lặp lại phía trên thông điệp sao cho mỗi chữ cái của văn bản thường được ghép với một chữ cái của khóa. Mỗi chữ cái khóa đại diện cho một mức dịch chuyển: A nghĩa là dịch chuyển 0, B là 1, C là 2, và cứ thế cho đến Z, dịch chuyển 25. Để mã hóa, bạn cộng mỗi chữ cái văn bản thường với chữ cái khóa của nó và vòng lại quanh bảng chữ cái; để giải mã, bạn trừ đi thay vì cộng.

Chỉ các chữ cái A đến Z được mã hóa, và mỗi chữ giữ nguyên dạng hoa hoặc thường của nó. Khoảng trắng, chữ số và dấu câu được giữ nguyên không động đến và không tiêu tốn một chữ cái khóa, nên khóa luôn giữ thẳng hàng với các chữ cái thực sự của thông điệp.

Ví dụ thực hành: từ khóa LEMON

Lấy cụm từ ATTACK AT DAWN và từ khóa LEMON. Xếp từ khóa lặp lại thẳng hàng với các chữ cái sẽ cho LEMONLEMONLE. Cộng mỗi chữ cái văn bản thường với chữ cái khóa của nó, A cộng L là L, T cộng E là X, T cộng M là F, và cứ thế, tạo ra văn bản mã hóa LXFOPVEFRNHR. Lưu ý rằng hai chữ T trong ATTACK trở thành các chữ cái mã hóa khác nhau, X và F, vì chúng nằm dưới các chữ cái khóa khác nhau. Đó chính là điều đánh bại phân tích tần suất đơn giản.

Để giải mã, bạn đảo ngược quá trình với cùng một từ khóa, trừ đi mỗi chữ cái khóa, hoặc đọc bảng tabula recta ngược lại. Không có từ khóa, văn bản mã hóa gần như chẳng để lộ điều gì.

Công thức Vigenère và bảng tabula recta

Nếu các chữ cái được đánh số từ 0 đến 25, với A là 0 và Z là 25, mã hóa là C = (P + K) mod 26 và giải mã là P = (C - K) mod 26, trong đó P là chữ cái văn bản thường, K là chữ cái khóa hiện tại, và phép mod 26 khiến bảng chữ cái vòng lại. Cùng một thao tác có thể thực hiện bằng tay nhờ bảng tabula recta, một lưới 26 nhân 26 gồm các bảng chữ cái đã dịch chuyển. Tìm chữ cái khóa ở bên trái và chữ cái văn bản thường dọc theo trên cùng, và ô nơi hàng và cột gặp nhau là chữ cái mã hóa.

Biến thể Autokey và Beaufort

Biến thể Autokey khắc phục điểm yếu chính của mật mã tiêu chuẩn, đó là khóa lặp lại. Sau khi từ khóa hết, khóa tiếp tục bằng chính văn bản thường, nên dòng khóa đang chạy không bao giờ lặp lại và mật mã khó tấn công hơn nhiều. Việc giải mã khôi phục văn bản thường từng chữ cái một và đưa nó trở lại vào dòng khóa.

Biến thể Beaufort dùng công thức C = (K - P) mod 26. Vì trừ đi từ khóa là phép nghịch đảo của chính nó, cùng một thao tác vừa mã hóa vừa giải mã, điều này khiến nó tiện lợi cho các đĩa mật mã từng được dùng trên biển. Công cụ này hỗ trợ cả ba biến thể để bạn có thể so sánh chúng trên cùng một văn bản và từ khóa.

Làm thế nào để phá mật mã Vigenère

Mật mã được phá theo hai giai đoạn. Trước tiên bạn tìm độ dài của từ khóa, theo cách cổ điển là dùng phép kiểm tra Kasiski, vốn tìm các nhóm chữ cái lặp lại trong văn bản mã hóa và đo khoảng cách giữa chúng, hoặc dùng phép thử Friedman, vốn dựa vào chỉ số trùng hợp. Một khi đã biết độ dài khóa, văn bản mã hóa được tách thành bấy nhiêu cột, mỗi cột được mã hóa bằng một mức dịch chuyển Caesar duy nhất, và phân tích tần suất thông thường phá từng cột một cách riêng rẽ.

Điều này có nghĩa là một mật mã Vigenère với khóa ngắn trên một thông điệp dài khá dễ bị phá, đó là lý do sức mạnh của mật mã phụ thuộc rất nhiều vào việc dùng một khóa dài, không lặp lại. Các ý tưởng Autokey và one-time-pad nảy sinh trực tiếp từ nỗ lực loại bỏ sự lặp lại đó.

Lược sử mật mã Vigenère

Ý tưởng dùng một từ khóa để chuyển đổi giữa các bảng chữ cái lần đầu được Giovan Battista Bellaso công bố vào năm 1553, dựa trên các bảng đa bảng chữ cái của Johannes Trithemius và Leon Battista Alberti. Phương pháp này về sau bị gán nhầm cho nhà ngoại giao Pháp Blaise de Vigenère, người mà cái tên đã gắn liền với nó dù chính công trình của ông mô tả phiên bản Autokey mạnh hơn. Mật mã khóa lặp lại đã kháng cự các nhà phân tích mật mã suốt nhiều thế kỷ cho đến khi Charles Babbage phá được nó một cách riêng tư vào thập niên 1850 và Friedrich Kasiski công bố một phương pháp tổng quát vào năm 1863.

Mật mã Vigenère có an toàn không?

Không theo tiêu chuẩn hiện đại. Một khi các phương pháp Kasiski và Friedman được công bố, bất kỳ mật mã Vigenère nào với khóa lặp lại đều trở nên có thể phá được nếu kiên nhẫn, và ngày nay thì phá được tức thì bằng máy tính. Giá trị thực sự của nó bây giờ mang tính giáo dục và giải trí: đó là cách rõ ràng nhất để thấy một khóa biến một mật mã tầm thường thành một mật mã mạnh hơn nhiều như thế nào, và nó vẫn là một mục cơ bản của các câu đố và bài tập lập trình. Để có sự an toàn thực sự, người ta dùng các thuật toán hiện đại như AES thay thế.

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

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ùng một từ khóa để mã hóa văn bản. Mỗi chữ cái của từ khóa áp dụng một mức dịch chuyển khác nhau cho một chữ cái của thông điệp, và từ khóa lặp lại trên toàn bộ văn bản. Vì cùng một chữ cái thường có thể ánh xạ tới các chữ cái mã hóa khác nhau, nó che giấu mẫu hình tần suất chữ cái vốn phá được các mật mã đơn giản hơn như Caesar.
Mật mã Vigenère khác mật mã Caesar như thế nào?
Mật mã Caesar dịch chuyển mọi chữ cái đi cùng một lượng cố định, nên nó chỉ có 25 khóa và rất dễ phá. Mật mã Vigenère dùng một từ khóa để áp dụng một mức dịch chuyển khác nhau cho mỗi chữ cái theo lượt, điều này giống như chạy nhiều mật mã Caesar song song nhau. Việc đó mở rộng đáng kể không gian khóa và che giấu mẫu hình tần suất, đó là lý do Vigenère được xem là không thể phá suốt nhiều thế kỷ.
Từ khóa là gì, và được dùng như thế nào?
Từ khóa là bí mật điều khiển mật mã. Mỗi chữ cái của nó đại diện cho một mức dịch chuyển, trong đó A là 0, B là 1, và cứ thế. Từ khóa được lặp lại phía trên thông điệp sao cho mỗi chữ cái văn bản thường được ghép với một chữ cái khóa, rồi cả hai được cộng lại để mã hóa hoặc trừ đi để giải mã. Chỉ các chữ cái A đến Z trong từ khóa được dùng, nên khoảng trắng hay chữ số trong đó đều bị bỏ qua.
Bạn có thể cho một ví dụ Vigenère thực hành không?
Dùng từ khóa LEMON để mã hóa ATTACK AT DAWN, khóa lặp lại xếp thẳng hàng thành LEMONLEMONLE, và cộng các chữ cái cho ra văn bản mã hóa LXFOPVEFRNHR. Hai chữ T trong văn bản thường trở thành các chữ cái mã hóa khác nhau vì chúng rơi vào dưới các chữ cái khóa khác nhau. Để giải mã LXFOPVEFRNHR, hãy dùng cùng từ khóa ở chế độ Giải mã và văn bản gốc trở lại ngay tức khắc.
Bảng tabula recta hay ô vuông Vigenère là gì?
Tabula recta là một lưới 26 nhân 26 liệt kê mọi bảng chữ cái đã dịch chuyển, mỗi bảng một hàng. Để mã hóa một chữ cái bằng tay, tìm chữ cái khóa ở cột bên trái và chữ cái văn bản thường dọc theo hàng trên cùng; ô nơi chúng gặp nhau là chữ cái mã hóa. Ô vuông bên dưới công cụ có tính tương tác và làm nổi bật các hàng ứng với những chữ cái trong từ khóa hiện tại của bạn.
Các biến thể Autokey và Beaufort là gì?
Autokey tăng cường sức mạnh cho mật mã bằng cách tiếp tục khóa với chính văn bản thường khi từ khóa hết, nên khóa không bao giờ lặp lại và mật mã khó phá hơn nhiều. Beaufort dùng công thức cipher equals key minus plaintext, điều khiến nó tự nghịch đảo: cùng một thao tác vừa mã hóa vừa giải mã. Công cụ này hỗ trợ các biến thể Vigenère cổ điển, Autokey và Beaufort.
Làm sao để phá hay bẻ khóa một mật mã Vigenère?
Trước tiên tìm độ dài khóa, theo cách cổ điển là dùng phép kiểm tra Kasiski, vốn đo khoảng cách giữa các nhóm văn bản mã hóa lặp lại, hoặc dùng phép thử Friedman với chỉ số trùng hợp. Một khi đã biết độ dài, văn bản mã hóa được tách thành bấy nhiêu cột, mỗi cột được mã hóa bằng một mức dịch chuyển Caesar duy nhất, và phân tích tần suất giải từng cột. Do đó một khóa ngắn trên một thông điệp dài khá dễ bị phá.
Tại sao mật mã Vigenère được gọi là không thể giải?
Vì trong khoảng ba trăm năm không ai công bố một cách đáng tin cậy để phá nó, nó được biết đến trong tiếng Pháp là le chiffre indéchiffrable, mật mã không thể giải. Việc lặp lại khóa che giấu tần suất chữ cái mà các nhà phân tích mật mã dựa vào. Danh tiếng của nó kéo dài cho đến khi Charles Babbage phá được nó một cách riêng tư vào thập niên 1850 và Friedrich Kasiski công bố một phương pháp tổng quát vào năm 1863.
Ai đã phát minh ra mật mã Vigenère?
Phương pháp từ khóa lần đầu được Giovan Battista Bellaso mô tả vào năm 1553, dựa trên công trình đa bảng chữ cái trước đó của Johannes Trithemius và Leon Battista Alberti. Về sau nó bị gán nhầm cho nhà ngoại giao Pháp Blaise de Vigenère, và cái tên đã gắn liền với nó kể từ đó, dù thực ra Vigenère mô tả phiên bản Autokey mạnh hơn.
Nó có thay đổi số, khoảng trắng hay dấu câu không?
Không. Chỉ các chữ cái A đến Z được mã hóa, và mỗi chữ giữ nguyên dạng hoa hoặc thường của nó. Chữ số, khoảng trắng, ngắt dòng và dấu câu được giữ nguyên không đổi và không tiêu tốn một chữ cái khóa, nên từ khóa luôn giữ thẳng hàng với các chữ cái thực sự của thông điệp của bạn.
Mật mã Vigenère có an toàn không?
Không dành cho sự bảo vệ thực sự. Kể từ khi các phương pháp Kasiski và Friedman được công bố, bất kỳ mật mã Vigenère nào với khóa lặp lại đều có thể bị phá, và một máy tính làm điều đó tức thì. Tốt nhất nên xem nó như một mật mã mang tính giáo dục và giải đố, cho thấy một khóa tăng cường sức mạnh cho mã hóa như thế nào. Để có sự an toàn thực sự, nên dùng các thuật toán hiện đại như AES thay thế.
Văn bản của tôi có được tải lên máy chủ không?
Không. Toàn bộ việc mã hóa và giải mã diễn ra hoàn toàn trong trình duyệt của bạn, nên văn bản và từ khóa của bạn không bao giờ được tải lên, ghi lại hay lưu trữ. Ngay cả liên kết chia sẻ cũng giữ văn bản và từ khóa của bạn trong phần URL nằm sau dấu thăng, phần mà trình duyệt không bao giờ gửi đến máy chủ, nên nó vẫn riêng tư cho đến khi bạn chọn chia sẻ.
Làm thế nào để viết một mật mã Vigenère bằng mã lập trình?
Lặp qua thông điệp và giữ một bộ đếm chỉ dành cho chữ cái. Với mỗi chữ cái, chuyển nó và chữ cái khóa tương ứng thành các con số từ 0 đến 25, cộng chúng để mã hóa hoặc trừ để giải mã, lấy kết quả modulo 26 để bảng chữ cái vòng lại, rồi chuyển trở lại thành một chữ cái. Bỏ qua và sao chép qua bất kỳ ký tự nào không phải chữ cái mà không đẩy khóa tiến lên. Trong JavaScript, charCodeAt và fromCharCode xử lý việc chuyển đổi, đó chính xác là cách công cụ chạy trong trình duyệt này hoạt động.

Công cụ liên quan

Tiếp tục với những công cụ hữu ích này

Mật mã Beaufort

Mật mã Gronsfeld

Mật mã Autokey

Mật mã Running Key

Mật mã Porta

Mật mã Trithemius