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ã Gronsfeld

Mã hóa và giải mã mật mã Gronsfeld, một mật mã Vigenère đơn giản hóa dùng một chuỗi chữ số ngắn làm khóa. Mỗi chữ số dịch chuyển chữ cái tương ứng trong thông điệp của bạn, và khóa lặp lại dọc theo văn bản. Chuyển giữa mã hóa và giải mã và theo dõi quá trình tính toán hình thành trực tiếp. Mọi thứ đều chạy trong trình duyệt của bạn.

Khóa số

Chữ số khóa

Nhập khóa dưới dạng một chuỗi chữ số từ 0 đến 9, chẳng hạn 31415. Mỗi chữ số quy định chữ cái tương ứng trong thông điệp của bạn bị dịch chuyển bao xa, và khóa lặp lại dọc theo văn bản. Chỉ các chữ số được dùng; mọi chữ cái, dấu cách hoặc dấu câu gõ vào khóa đều bị bỏ qua.

Bản rõ
Bản mã

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

Cách sử dụng Mật mã Gronsfeld

  1. 1

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

    Chọn Mã hóa để biến bản rõ thành bản mã Gronsfeld, hoặc Giải mã để khôi phục bản rõ từ bản mã. Cùng một khóa số được dùng cho cả hai chiều.

  2. 2

    Nhập khóa số

    Gõ khóa dưới dạng một chuỗi chữ số từ 0 đến 9, chẳng hạn 31415. Mỗi chữ số đặt phép dịch chuyển cho chữ cái mà nó xếp thẳng hàng, và khóa lặp lại dọc theo thông điệp. Chữ cái, dấu cách và dấu câu trong khóa đều bị bỏ qua.

  3. 3

    Gõ hoặc dán văn bản của bạn

    Nhập thông điệp bạn muốn chuyển đổi. Mật mã chạy tự động ngay khi bạn gõ, và quá trình tính toán từng chữ cái cập nhật trực tiếp bên dưới để bạn có thể thấy mỗi phép dịch chuyển.

  4. 4

    Đọc, sao chép và chia sẻ

    Đọc kết quả, rồi sao chép nó, tải nó 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 khóa, chiều và văn bản của bạn. Mọi thứ đều ở lại trong trình duyệt của bạn.

Tìm hiểu về mật mã Gronsfeld

Mật mã Gronsfeld là gì?

Mật mã Gronsfeld là một mật mã thay thế đa bảng hoạt động y hệt mật mã Vigenère nhưng lấy khóa của nó là một chuỗi chữ số ngắn thay vì một từ khóa. Mỗi chữ số từ 0 đến 9 cho bạn biết phải dịch chuyển chữ cái tương ứng của thông điệp bao xa, và các chữ số lặp lại dọc theo văn bản. Vì cùng một chữ cái bản rõ có thể trở thành nhiều chữ cái bản mã khác nhau tùy vào vị trí của nó, mật mã che giấu mẫu hình tần suất chữ cái đơn giản vốn để lộ một phép dịch Caesar thông thường.

Mật mã được đặt tên theo Johann Franz, Bá tước xứ Gronsfeld, một nhà ngoại giao và binh sĩ thế kỷ mười bảy, và nó được học giả Gaspar Schott mô tả trong tác phẩm năm 1665 của ông về thuật viết bí mật. Sức hấp dẫn của nó mang tính thực tiễn: một khóa số dễ nhớ và dễ gửi, chẳng hạn như một ngày tháng hoặc một con số đáng nhớ, mà không phải thỏa thuận trước về một từ bí mật. Vì lẽ đó mật mã Gronsfeld đã được dùng thực sự trong thư từ và về sau trong thời đại điện báo.

Mật mã Gronsfeld hoạt động ra sao

Đánh số bảng chữ cái từ A là 0 đến Z là 25. Viết khóa số dưới thông điệp, lặp lại nó bao nhiêu lần tùy cần sao cho một chữ số nằm dưới mỗi chữ cái. Để mã hóa, cộng mỗi chữ số khóa vào chữ cái phía trên nó và cuộn vòng quanh bảng chữ cái bằng phần dư cho 26, nên chữ cái bản mã là C = (P + K) mod 26. Để giải mã thì bạn trừ thay vào đó, P = (C − K) mod 26, phép này hoàn tác phép dịch chuyển và trả về chữ cái ban đầu.

Chỉ 26 chữ cái được dịch chuyển. Dấu cách, dấu câu, và ngay cả các chữ số xuất hiện trong chính thông điệp đều đi thẳng qua và không tiêu tốn một chữ số khóa, nên khóa vẫn được xếp thẳng hàng với những chữ cái có ý nghĩa. Chữ hoa chữ thường được giữ nguyên, nên một chữ cái viết hoa vẫn là viết hoa và một chữ cái viết thường vẫn là viết thường. Vì mỗi chữ số nằm giữa 0 và 9, mỗi vị trí chỉ dùng một trong mười phép dịch chuyển khả dĩ, đó là đặc tính định nghĩa của mật mã Gronsfeld.

Ví dụ thực hành

Mã hóa thông điệp HELLO với khóa số 31415. Lặp lại khóa xếp thẳng các chữ số 3, 1, 4, 1, 5 dưới các chữ cái H, E, L, L, O. Dịch chuyển mỗi chữ cái về phía trước theo chữ số của nó cho ra H cộng 3 là K, E cộng 1 là F, L cộng 4 là P, L cộng 1 là M, và O cộng 5 là T. Bản mã là KFPMT.

Để giải mã KFPMT với cùng khóa 31415, trừ mỗi chữ số thay vào đó. K trừ 3 là H, F trừ 1 là E, P trừ 4 là L, M trừ 1 là L, và T trừ 5 là O, ghép thành HELLO trở lại. Các bước mã hóa và giải mã là ảnh phản chiếu của nhau, nên thứ duy nhất người nhận cần là cùng một khóa số.

Gronsfeld so với Vigenère

Mật mã Gronsfeld được hiểu rõ nhất như một mật mã Vigenère với khóa bị hạn chế. Một từ khóa Vigenère biến mỗi chữ cái của nó thành một phép dịch chuyển từ 0 đến 25, dùng toàn bộ bảng chữ cái. Một khóa Gronsfeld chỉ bao giờ dùng các phép dịch chuyển 0 đến 9, vốn giống với các chữ cái từ khóa Vigenère A đến J. Vậy nên khóa Gronsfeld 31415 hành xử y hệt từ khóa Vigenère DBEBF, bởi vì D là phép dịch 3, B là phép dịch 1, E là phép dịch 4, và cứ thế.

Sự hạn chế này là một sự đánh đổi. Lợi thế là sự tiện lợi: một con số dễ nhớ, dễ đọc to, hay dễ mang theo hơn một từ, và không có việc chuyển đổi bảng chữ cái sang phép dịch chuyển phải làm trong đầu. Cái giá là sức mạnh. Vì chỉ mười trong hai mươi sáu phép dịch chuyển khả dĩ bao giờ cũng được dùng ở mỗi vị trí, không gian khóa nhỏ hơn nhiều so với một khóa Vigenère đầy đủ cùng độ dài, điều này khiến mật mã Gronsfeld dễ phá hơn.

Vì sao dùng một con số làm khóa?

Một khóa số chính là toàn bộ ý nghĩa của mật mã Gronsfeld. Con người giỏi ghi nhớ những con số đã sẵn có ý nghĩa với họ, chẳng hạn một ngày sinh, một số nhà, hay những chữ số mở đầu của một hằng số quen thuộc như số pi. Hai người trao đổi có thể thỏa thuận một con số như vậy nhanh chóng và dựng lại nó từ trí nhớ, mà không phải ghi xuống một từ bí mật có thể bị tìm ra.

Các con số cũng truyền đi gọn gàng. Trong thời đại điện báo, một khóa làm bằng các chữ số có thể được truyền và ghi lại với ít khả năng sai sót hơn một từ, và nó không cần một cuốn sách mã đặc biệt nào. Chính sự thực tiễn đó là lý do mật mã Gronsfeld vẫn được ưa chuộng cho thuật viết bí mật hằng ngày rất lâu sau khi những phương pháp mạnh hơn đã tồn tại, và là lý do nó vẫn xuất hiện ngày nay trong các câu đố và việc giảng dạy.

Cách phá mật mã Gronsfeld

Gronsfeld là một mật mã dùng khóa lặp lại, nên nó khuất phục trước cùng cuộc tấn công phá Vigenère, chỉ là dễ dàng hơn. Bước đầu tiên là tìm độ dài của khóa. Các công cụ cổ điển cho việc này là phép kiểm tra Kasiski, vốn đo khoảng cách giữa các nhóm chữ cái lặp lại, và chỉ số trùng hợp, vốn phát hiện mức độ không đồng đều của các tần suất chữ cái. Một khi đã biết độ dài khóa, bản mã tách thành các cột mà mỗi cột được dịch chuyển bởi một chữ số duy nhất.

Giải từng cột là nơi Gronsfeld yếu hơn Vigenère. Mỗi cột được dịch chuyển bởi một trong chỉ mười giá trị khả dĩ, nên một nhà phân tích có thể đơn giản thử cả mười và chọn phép dịch chuyển khiến cột đọc lên như ngôn ngữ thông thường. Với những khóa ngắn, toàn bộ khóa thậm chí có thể được tìm ra bằng vét cạn, vì mỗi chữ số chỉ có mười lựa chọn. Do đó một thông điệp Gronsfeld chỉ an toàn bằng đúng mức khóa của nó dài, khó đoán, và không bao giờ được dùng lại.

Mật mã Gronsfeld có an toàn không?

Không. Theo tiêu chuẩn hiện đại, mật mã Gronsfeld không cung cấp sự an toàn thực sự nào. Không gian khóa nhỏ trên mỗi chữ cái và khóa lặp lại của nó khiến nó nhanh chóng bị phá bằng các phương pháp giấy-bút, và tầm thường đối với một chiếc máy tính. Nó thuộc về lịch sử của các mật mã thủ công, nơi giá trị của nó là sự tiện lợi của một khóa số chứ không phải bất kỳ sự kháng cự nghiêm túc nào trước phân tích.

Ngày nay mật mã Gronsfeld được ưa thích vì mục đích học tập và giải trí. Đó là một cách rõ ràng, thân thiện để thấy một khóa số dẫn dắt một phép dịch chuyển đa bảng ra sao, và nó xuất hiện đều đặn trong các cuộc săn câu đố, phòng trốn thoát, geocaching và các thử thách cướp cờ. Để bảo vệ thông tin thực sự, bạn nên dựa vào các thuật toán hiện đại, được kiểm chứng kỹ lưỡng như AES thay vào đó.

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

Mật mã Gronsfeld là gì?
Mật mã Gronsfeld là một mật mã thay thế đa bảng hoạt động như mật mã Vigenère nhưng dùng một khóa làm bằng các chữ số thay vì một từ khóa. Mỗi chữ số từ 0 đến 9 dịch chuyển chữ cái tương ứng của thông điệp, và khóa lặp lại dọc theo văn bản. Nó được đặt tên theo một vị bá tước thế kỷ mười bảy và được quý trọng vì sự tiện lợi của một khóa số.
Mật mã Gronsfeld hoạt động như thế nào?
Đánh số bảng chữ cái từ A là 0 đến Z là 25 và viết khóa chữ số dưới thông điệp, lặp lại nó khi cần. Để mã hóa, cộng mỗi chữ số khóa vào chữ cái phía trên nó theo modulo 26: C = (P + K) mod 26. Để giải mã, trừ thay vào đó: P = (C − K) mod 26. Chỉ các chữ cái được dịch chuyển; dấu cách, dấu câu và chữ số trong văn bản đi xuyên qua không đổi.
Gronsfeld khác mật mã Vigenère như thế nào?
Gronsfeld là một mật mã Vigenère với khóa bị hạn chế. Một từ khóa Vigenère dùng các phép dịch chuyển từ 0 đến 25, còn một khóa Gronsfeld chỉ dùng các phép dịch chuyển 0 đến 9. Vậy nên khóa Gronsfeld 31415 giống hệt từ khóa Vigenère DBEBF. Khóa số dễ nhớ hơn, nhưng tập phép dịch chuyển nhỏ hơn khiến Gronsfeld dễ phá hơn.
Bạn có thể cho một ví dụ về mật mã Gronsfeld không?
Mã hóa HELLO với khóa 31415 cho ra KFPMT. Các chữ số 3, 1, 4, 1, 5 xếp thẳng dưới các chữ cái và dịch chuyển mỗi chữ về phía trước: H cộng 3 là K, E cộng 1 là F, L cộng 4 là P, L cộng 1 là M, và O cộng 5 là T. Giải mã KFPMT với cùng khóa thì trừ các chữ số và trả về HELLO.
Tôi nên dùng khóa nào?
Dùng bất kỳ chuỗi chữ số nào từ 0 đến 9. Một khóa dài hơn, ít đoán trước được hơn thì mạnh hơn, bởi vì sự an toàn của mật mã phụ thuộc vào việc khóa dài, khó đoán, và không bao giờ được dùng lại. Những con số ngắn hoặc lộ liễu chẳng hạn 1234 bị phá gần như tức thì. Chữ cái và các ký tự khác gõ vào khóa đều bị bỏ qua, nên chỉ các chữ số là quan trọng.
Làm thế nào để giải mã một mật mã Gronsfeld?
Chuyển công cụ sang Giải mã, nhập đúng khóa số đã được dùng để mã hóa, và dán bản mã vào. Công cụ trừ mỗi chữ số khóa để khôi phục bản rõ. Nếu bạn không biết khóa, bạn thường có thể khôi phục nó bằng phép phá mã, vì mỗi vị trí chỉ dùng một trong mười phép dịch chuyển khả dĩ.
Vì sao khóa dùng các con số thay vì chữ cái?
Một khóa số là đặc điểm định nghĩa của mật mã Gronsfeld và là lợi thế thực tiễn chính của nó. Những con số chẳng hạn một ngày tháng hay các chữ số của số pi thì dễ nhớ và dễ đọc to, và chúng không cần chuyển đổi từ chữ cái sang phép dịch chuyển. Trong lịch sử, điều này khiến mật mã tiện lợi cho thư từ và cho điện báo, nơi các chữ số truyền đi gọn gàng.
Mật mã có thay đổi dấu cách, chữ số và dấu câu không?
Không. Chỉ 26 chữ cái được dịch chuyển. Dấu cách, dấu câu và bất kỳ chữ số nào xuất hiện trong chính thông điệp đều đi xuyên qua không đổi, và chúng không tiêu tốn một chữ số khóa, nên khóa vẫn được căn thẳng với các chữ cái. Chữ hoa chữ thường được giữ nguyên, nên kết quả giữ được hình dạng của văn bản gốc của bạn.
Một chữ số khóa bằng 0 có được phép không?
Có. Một chữ số 0 là một giá trị khóa hợp lệ dịch chuyển chữ cái của nó đi không, để nguyên nó tại vị trí đó. Vì vậy một khóa hoàn toàn gồm các số không sẽ trả về thông điệp không đổi. Trộn các số không vào một khóa dài hơn hoàn toàn ổn và chỉ đơn giản có nghĩa là một số vị trí không bị dịch chuyển.
Làm thế nào để phá mật mã Gronsfeld?
Vì khóa lặp lại, trước tiên bạn tìm độ dài khóa bằng phép kiểm tra Kasiski và chỉ số trùng hợp, rồi tách bản mã thành các cột chia sẻ một chữ số. Mỗi cột chỉ dùng một trong mười phép dịch chuyển khả dĩ, nên thử cả mười và giữ lại kết quả đọc được sẽ khôi phục nó nhanh chóng. Những khóa ngắn thậm chí có thể bị vét cạn hoàn toàn.
Mật mã Gronsfeld có an toàn không?
Không. Theo tiêu chuẩn hiện đại, nó không cung cấp sự an toàn thực sự nào: không gian khóa nhỏ trên mỗi chữ cái và khóa lặp lại khiến nó nhanh chóng bị phá bằng tay và tầm thường đối với một chiếc máy tính. Tốt nhất nên xem nó như một mật mã giáo dục và giải đố cùng một mảnh của lịch sử mật mã học. Để bảo vệ thực sự, hãy dùng một thuật toán hiện đại như AES thay vào đó.
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à khóa của bạn không bao giờ được tải lên, ghi lại hay lưu trữ. Ngay cả một liên kết chia sẻ cũng giữ dữ liệu 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ẻ.

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ã Porta

Mật mã Trithemius

Mật mã Vigenère

Mật mã Autokey

Mật mã Running Key