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

Mã hóa và giải mã mật mã Pollux. Trước tiên thông điệp được viết bằng mã Morse với một chữ x giữa các chữ cái và hai chữ x giữa các từ, sau đó mỗi dấu chấm, dấu gạch và dấu phân cách được thay bằng một trong các chữ số từ không đến chín mà bạn gán cho nó. Bởi vì nhiều chữ số có thể đại diện cho cùng một ký hiệu, nên cùng một chữ cái mỗi lần lại được viết khác nhau. Hãy theo dõi quá trình xử lý trực tiếp từ chữ cái sang Morse rồi sang chữ số, rồi sao chép, tải xuống hoặc chia sẻ kết quả. Mọi thứ đều chạy ngay trong trình duyệt của bạn.

Khóa

Khóa

Khóa quy định mỗi chữ số 0-9 đại diện cho ký hiệu nào. Hãy nhập mười ký hiệu, mỗi ký hiệu cho một chữ số theo thứ tự từ 0 đến 9, dùng dấu chấm (.), dấu gạch (-), hoặc một chữ x cho dấu phân cách. Khóa phải bao gồm ít nhất một ký hiệu mỗi loại để mỗi ký hiệu đều có một chữ số. Ví dụ x...x--xxx khiến 0, 4, 7, 8 và 9 là dấu phân cách, 1, 2 và 3 là dấu chấm, còn 5 và 6 là dấu gạch. Bất cứ thứ gì không dùng được sẽ quay về khóa mặc định này, và cả hai bên đều phải dùng cùng một khóa.

Văn bản gốc
Chữ số mã hóa

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

Bảng khóa (ký hiệu → chữ số)

Ký hiệu

Chữ số

Chấm

1
2
3

Gạch

5
6

×

Dấu phân cách (x)

0
4
7
8
9

Cách sử dụng Pollux Cipher

  1. 1

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

    Chọn Mã hóa để biến văn bản gốc thành các chữ số mật mã Pollux, hoặc Giải mã để biến các chữ số mã hóa trở lại thành văn bản gốc.

  2. 2

    Đặt khóa

    Nhập mười ký hiệu, mỗi ký hiệu cho một chữ số từ 0 đến 9, dùng dấu chấm, dấu gạch, hoặc một chữ x cho dấu phân cách. Hãy chắc chắn rằng cả ba ký hiệu đều xuất hiện để mỗi ký hiệu đều có một chữ số, và dùng cùng một khóa ở cả hai bên.

  3. 3

    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à nó được chuyển đổi ngay khi bạn gõ. Khi mã hóa, bảng các bước hiển thị mỗi chữ cái trên mã Morse của nó, rồi toàn bộ luồng theo từng ký hiệu một với chữ số dưới mỗi ký hiệu.

  4. 4

    Đọc bảng khóa

    Mở bảng khóa để xem những chữ số nào đại diện cho dấu chấm, dấu gạch và dấu phân cách theo khóa hiện tại của bạn.

  5. 5

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

    Sao chép kết quả, 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 chính xác văn bản và khóa của bạn sẵn sàng để dùng.

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

Mật mã Pollux là gì?

Mật mã Pollux giấu một thông điệp bên trong một dãy trông vô hại gồm các chữ số 0 đến 9. Nó hoạt động bằng cách trước tiên chuyển văn bản thành mã Morse rồi ngụy trang phần Morse đó: mỗi dấu chấm, mỗi dấu gạch và mỗi dấu phân cách đều được thay bằng một con số. Bởi vì thông điệp hoàn chỉnh chẳng có gì ngoài các chữ số, nó không để lộ dấu hiệu rõ ràng nào cho thấy có mã Morse đang ẩn bên dưới, và đó chính là điều khiến nó trở thành một lựa chọn được ưa chuộng trong các cuộc săn giải đố, phòng thoát hiểm, cùng các thử thách capture-the-flag và CodeBusters của Science Olympiad.

Pollux thuộc cùng họ nhỏ các mật mã giấy-bút dựa trên Morse như Fractionated Morse và Morbit, tất cả đều được American Cryptogram Association lập danh mục và gìn giữ. Điều khiến Pollux khác biệt là cách dùng khéo léo nhiều chữ số hơn số ký hiệu: chỉ có ba ký hiệu Morse nhưng có mười chữ số, nên mỗi ký hiệu được trao cho vài chữ số để ẩn mình. Chỉ một ý tưởng đó thôi đã là toàn bộ mánh khóe, và đó là điều san phẳng tần suất chữ cái mà một người phá mã lẽ ra sẽ dựa vào.

Ba ký hiệu, mười chữ số

Một khi thông điệp được viết bằng Morse, nó chỉ dùng đúng ba ký hiệu: dấu chấm, dấu gạch, và một dấu phân cách, ở đây viết là x — một chữ x giữa các chữ cái và hai chữ xx giữa các từ. Để mã hóa nó, bạn quyết định trong các chữ số 0 đến 9 chữ số nào sẽ đại diện cho dấu chấm, chữ số nào cho dấu gạch, và chữ số nào cho dấu phân cách. Không có quy tắc cố định; yêu cầu duy nhất là mỗi ký hiệu trong ba ký hiệu phải có ít nhất một chữ số, để không có gì bị bỏ lại mà không có con số và việc giải mã vẫn khả thi.

Với mười chữ số chia cho ba ký hiệu, hầu hết các ký hiệu cuối cùng đều có hai, ba hoặc nhiều chữ số để lựa chọn. Khi bạn gặp một dấu chấm trong luồng, bạn có thể viết bất kỳ chữ số nào được gán cho dấu chấm. Sự tự do đó chính là trái tim của Pollux: chữ E, một dấu chấm đơn lẻ, có thể là số 1 ở chỗ này và là số 3 ở chỗ khác, nên một kẻ tấn công đếm xem mỗi chữ số xuất hiện thường xuyên ra sao học được gần như chẳng có gì về việc chữ cái nào là phổ biến.

Chọn lựa giữa các chữ số

Bởi vì một ký hiệu đơn lẻ có thể ánh xạ tới vài chữ số, người mã hóa phải chọn một chữ số mỗi lần. Theo truyền thống, lựa chọn được thực hiện ngẫu nhiên, nên cùng một thông điệp được mã hóa hai lần sẽ tạo ra hai chuỗi số khác nhau — một đặc tính hữu ích càng làm khó việc phân tích.

Tuy nhiên, một công cụ trực tuyến lại phải có tính lặp lại: nhập cùng một văn bản với cùng một khóa thì bạn luôn phải nhận được cùng một kết quả, và một liên kết được chia sẻ phải mở lại đúng những gì bạn đã thấy. Công cụ này giữ được sự đa dạng mà không cần tính ngẫu nhiên bằng cách lần lượt luân chuyển qua các chữ số của mỗi ký hiệu. Nếu dấu chấm được gán 1, 2 và 3, thì dấu chấm đầu tiên trở thành 1, dấu chấm tiếp theo thành 2, dấu chấm tiếp theo thành 3, rồi quay lại 1, và cứ thế tiếp tục. Đầu ra vẫn trải đều trên tất cả các chữ số khả dụng, nhưng giờ đây nó có thể tái tạo được — và việc giải mã không bao giờ phụ thuộc vào chữ số nào đã được chọn, bởi vì mỗi chữ số ánh xạ trở lại đúng một ký hiệu.

Mật mã Pollux hoạt động như thế nào

Việc mã hóa diễn ra qua hai bước. Thứ nhất, viết toàn bộ thông điệp bằng Morse, đặt một chữ x giữa các chữ cái và hai chữ x giữa các từ. Thứ hai, đi qua luồng chấm-gạch-x đó theo từng ký hiệu một và thay mỗi ký hiệu bằng một trong các chữ số bạn đã gán cho nó. Không có phần đệm và không có việc nhóm nào phải bận tâm: mỗi ký hiệu đơn giản trở thành một chữ số duy nhất, nên một luồng hai mươi ký hiệu trở thành đúng hai mươi chữ số.

Bảng các bước ở trên trình bày điều này một cách trực tiếp. Hàng trên ghép mỗi chữ cái với mã Morse của nó, còn hàng dưới trải ra toàn bộ luồng theo từng ký hiệu một với chữ số mà mỗi ký hiệu đã trở thành ở bên dưới. Hãy quan sát một chữ cái được lặp lại và bạn sẽ thấy nó nhận những chữ số khác nhau, bằng chứng nhìn thấy được cho cách Pollux rải các con số của nó. Bảng khóa bên dưới hiển thị, đối với khóa hiện tại, chính xác những chữ số nào thuộc về dấu chấm, dấu gạch và dấu phân cách.

Một ví dụ minh họa

Lấy lời cầu cứu SOS với khóa x...x--xxx, khóa này khiến 1, 2 và 3 là dấu chấm, 5 và 6 là dấu gạch, còn 0, 4, 7, 8 và 9 là dấu phân cách. Trong Morse, SOS là chấm-chấm-chấm cho S, gạch-gạch-gạch cho O, và lại chấm-chấm-chấm cho S, được nối lại bằng các dấu phân cách đơn thành luồng mười một ký hiệu chấm chấm chấm x gạch gạch gạch x chấm chấm chấm.

Bây giờ thay mỗi ký hiệu, luân chuyển qua các chữ số của nó. Ba dấu chấm đầu tiên nhận 1, 2 và 3; dấu phân cách đầu tiên nhận 0; ba dấu gạch nhận 5, 6 và 5 (dấu gạch chỉ có hai chữ số, nên nó luân chuyển trở lại); dấu phân cách tiếp theo nhận 4; và ba dấu chấm cuối cùng lại nhận 1, 2 và 3. Kết quả là 12305654123. Việc giải mã đảo ngược nó: mỗi chữ số trở thành ký hiệu của nó — 1, 2, 3 là dấu chấm, 0 và 4 là dấu phân cách, 5 và 6 là dấu gạch — dựng lại chấm chấm chấm x gạch gạch gạch x chấm chấm chấm, mà đọc trở lại qua bảng Morse là SOS.

Giải mã một thông điệp Pollux

Việc giải mã đơn giản một cách tuyệt vời vì không có sự nhập nhằng nào: mỗi chữ số đại diện cho đúng một ký hiệu. Tra cứu mỗi chữ số trong khóa để biến chuỗi số trở lại thành các dấu chấm, dấu gạch và dấu phân cách, nối chúng thành một luồng dài, rồi tách nó tại các dấu phân cách — một chữ x kết thúc một chữ cái và hai chữ xx kết thúc một từ — và đọc mỗi chuỗi chấm và gạch trở lại qua bảng Morse để khôi phục văn bản.

Để giải mã đúng, bạn phải dùng cùng một khóa đã được dùng để mã hóa; một khóa khác sẽ ánh xạ các chữ số tới những ký hiệu sai và phần Morse sẽ trở nên vô nghĩa. Bởi vì chỉ chữ cái và chữ số mới có mã Morse, bất kỳ dấu câu hay ký hiệu nào khác trong thông điệp gốc đều đã bị loại bỏ trong quá trình mã hóa và sẽ không quay trở lại, và một dạng viết tắt như "it's" sẽ trở lại thành từ duy nhất ITS. Các khoảng trống giữa các nhóm chữ số mã hóa bị bỏ qua khi giải mã, nên không quan trọng văn bản mã hóa được viết liền mạch hay thành các khối năm chữ số gọn gàng.

Lịch sử, công dụng và tính bảo mật

Pollux là một trong số ít các mật mã dựa trên Morse — cùng với Fractionated Morse và Morbit — được American Cryptogram Association thu thập cho mục đích phân tích mật mã giải trí, và nó đã tìm thấy một cuộc đời thứ hai trong các cuộc thi học đường như CodeBusters của Science Olympiad, nơi học sinh học cách khôi phục khóa từ những khuôn mẫu mà phần Morse để lại phía sau. Mánh khóe dùng nhiều ký hiệu mã hóa hơn số ký hiệu bản rõ, để vài ký hiệu cùng đại diện cho một, là một bài học nhỏ nhưng tinh tế về cách đánh bại việc đếm tần suất.

Theo tiêu chuẩn hiện đại, Pollux không an toàn. Việc trải mỗi ký hiệu trên vài chữ số đánh bại phép phân tích tần suất ngây thơ, nhưng phần Morse nền tảng áp đặt những khuôn mẫu mạnh mẽ, ai cũng biết — không bao giờ có ba dấu phân cách xuất hiện liên tiếp, một số mã ngắn rất phổ biến — và một khóa đã biết hoặc đoán được, hay đơn giản là đủ lượng văn bản mã hóa, sẽ cho phép một người giải kiên trì hoặc một máy tính khôi phục thông điệp. Hãy xem Pollux như một câu đố và một công cụ dạy học, một minh họa sinh động về việc ngụy trang một mã bằng một mã khác nâng cao rào cản ra sao, và đừng bao giờ coi nó như một cách để bảo vệ các bí mật thực sự. Để có sự bảo mật thực sự, hãy luôn dùng một thuật toán hiện đại đã được giới chuyên môn đánh giá như AES.

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

Mật mã Pollux là gì?
Đó là một mật mã thủ công giấu mã Morse bên trong một chuỗi các chữ số từ 0 đến 9. Thông điệp được viết bằng Morse với x phân cách các chữ cái và xx phân cách các từ, sau đó mỗi dấu chấm, dấu gạch và dấu phân cách được thay bằng một trong các chữ số mà bạn gán cho nó. Bởi vì mỗi ký hiệu có thể có vài chữ số, văn bản mã hóa dùng cả mười chữ số và cùng một chữ cái hiếm khi trông giống nhau hai lần.
Khóa Pollux hoạt động như thế nào?
Khóa quyết định những chữ số nào đại diện cho dấu chấm, những chữ số nào cho dấu gạch, và những chữ số nào cho dấu phân cách. Bạn gán cả mười chữ số 0 đến 9 cho ba ký hiệu, với ít nhất một chữ số cho mỗi ký hiệu. Trong công cụ này, bạn nhập mười ký hiệu theo thứ tự cho các chữ số 0 đến 9 — ví dụ x...x--xxx khiến 0, 4, 7, 8 và 9 là dấu phân cách, 1, 2 và 3 là dấu chấm, còn 5 và 6 là dấu gạch.
Tại sao nhiều chữ số có thể có nghĩa là cùng một ký hiệu?
Chỉ có ba ký hiệu Morse nhưng có mười chữ số, nên các chữ số dư được chia ra cho các ký hiệu. Việc trao cho mỗi ký hiệu nhiều hơn một chữ số chính là toàn bộ điểm cốt lõi của Pollux: nó cho phép một chữ cái phổ biến được viết theo những cách khác nhau, điều này san phẳng tần suất các chữ số và đánh bại những cuộc tấn công đếm đơn giản vốn phá vỡ một mật mã thay thế thông thường.
Tại sao cùng một văn bản lại cho cùng các chữ số ở đây?
Mật mã truyền thống chọn một chữ số ngẫu nhiên mỗi khi một ký hiệu có nhiều hơn một, nên mỗi lần mã hóa lại khác nhau. Một công cụ web phải có tính tái tạo, nên thay vào đó công cụ này lần lượt luân chuyển qua các chữ số của mỗi ký hiệu — chẳng hạn đầu tiên 1, rồi 2, rồi 3, rồi quay lại 1. Đầu ra vẫn dùng tất cả các chữ số được gán, và bởi vì mỗi chữ số ánh xạ trở lại một ký hiệu, việc giải mã không bị ảnh hưởng.
Bạn có thể đưa ra một ví dụ minh họa không?
Với khóa x...x--xxx, từ SOS trở thành các chữ số 12305654123. SOS là chấm-chấm-chấm x gạch-gạch-gạch x chấm-chấm-chấm trong Morse; luân chuyển mỗi ký hiệu qua các chữ số của nó cho ra 1, 2, 3 cho các dấu chấm, 0 cho dấu phân cách, 5, 6, 5 cho các dấu gạch, 4 cho dấu phân cách tiếp theo, và 1, 2, 3 cho các dấu chấm cuối cùng.
Làm thế nào để tôi giải mã một thông điệp Pollux?
Đảo ngược các bước: tra cứu mỗi chữ số trong khóa để được ký hiệu Morse duy nhất của nó, nối chúng thành một chuỗi chấm-gạch-x, tách nó tại các dấu phân cách (một chữ x giữa các chữ cái, hai chữ xx giữa các từ), và đọc mỗi chuỗi chấm và gạch trở lại qua bảng Morse. Trong công cụ này, hãy chọn Giải mã và nhập cùng một khóa đã được dùng để mã hóa.
Nó có xử lý số và dấu câu không?
Chữ cái và chữ số được mã hóa, vì cả hai đều có mã Morse chuẩn. Dấu câu và các ký hiệu khác bị loại bỏ, và bất kỳ chuỗi khoảng trống nào cũng trở thành một dấu ngắt từ duy nhất. Điều này có nghĩa là một dạng viết tắt như "it's" được xử lý như từ duy nhất ITS, phù hợp với các bản triển khai tham chiếu phổ biến của mật mã này.
Điều gì xảy ra nếu khóa của tôi không hợp lệ?
Một khóa phải phân giải thành đúng mười ký hiệu và dùng cả ba ký hiệu chấm, gạch và dấu phân cách. Nếu không — quá ít hoặc quá nhiều ký hiệu, hoặc thiếu một ký hiệu — công cụ sẽ quay về khóa mặc định x...x--xxx để trang vẫn hoạt động. Bảng khóa luôn hiển thị khóa đang thực sự được dùng, đó là xác nhận của bạn rằng một khóa đã nhập được chấp nhận.
Pollux khác với Morbit và Fractionated Morse như thế nào?
Cả ba đều viết thông điệp bằng Morse trước. Pollux thay mỗi ký hiệu đơn lẻ bằng một chữ số, chia mười chữ số cho ba ký hiệu. Morbit đọc luồng theo từng hai ký hiệu một và xuất ra các chữ số 1 đến 9, trong khi Fractionated Morse đọc nó theo từng ba ký hiệu một và xuất ra các chữ cái A đến Z. Vì vậy Pollux và Morbit đều tạo ra các con số nhưng theo những cách khác nhau, còn Fractionated Morse tạo ra các chữ cái.
Mật mã Pollux có an toàn không?
Không. Việc chia mỗi ký hiệu cho vài chữ số đánh bại phép đếm tần suất đơn giản, nhưng phần Morse nền tảng để lại những khuôn mẫu thống kê mạnh mẽ, và mật mã này thất thủ trước các phương pháp giải cổ điển và trước máy tính, đặc biệt khi khóa bị đoán ra hoặc bị tái sử dụng hoặc khi có sẵn nhiều văn bản mã hóa. Nó tuyệt vời cho các câu đố và việc học hỏi, nhưng để bảo vệ thực sự hãy dùng một thuật toán hiện đại như AES.
Văn bản của tôi có được tải lên một 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 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ữ văn bản và khóa của bạn trong phần URL nằm sau ký hiệu #, mà trình duyệt không bao giờ gửi tới một máy chủ, nên thông điệp của bạn vẫn riêng tư cho đến khi bạn chọn chia sẻ liên kết đó.

Công cụ liên quan

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

Fractionated Morse Cipher

Morbit Cipher

Trình dịch mã Morse

Mật mã Caesar

Mật mã Vigenère

Mật mã Atbash