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ã Rail Fence

Mã hóa và giải mã mật mã Rail Fence, phép chuyển vị zigzag cổ điển viết thông điệp của bạn theo đường chéo băng qua một loạt hàng rào rồi đọc lại từng hàng một. Điều chỉnh số hàng rào và độ lệch rồi xem hàng rào hình thành trực tiếp. Mọi thứ đều chạy trong trình duyệt của bạn.

Thiết lập hàng rào

Hàng rào

3

Độ lệch

0

Hàng rào quy định zigzag dùng bao nhiêu hàng. Độ lệch dịch chuyển vị trí trên hàng rào nơi ký tự đầu tiên bắt đầu, để ở 0 cho mật mã chuẩn.

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

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

Sơ đồ hàng rào zigzag

Ví dụ với từ WEAREDISCOVERED. Nhập văn bản của riêng bạn ở trên để xem nó trên hàng rào.

W
E
C
R
E
R
D
S
O
E
E
A
I
V
D

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

  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 văn bản mã hóa rail fence, hoặc Giải mã để khôi phục thông điệp gốc từ văn bản mã hóa.

  2. 2

    Đặt số hàng rào và độ lệch

    Chọn zigzag dùng bao nhiêu hàng rào. Để độ lệch ở không cho mật mã chuẩn, hoặc thay đổi nó để khớp với một thông điệp đã được mã hóa kèm độ lệch. Để giải mã, hãy dùng đúng thiết lập đã dùng để mã hóa.

  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. Mật mã chạy tự động khi bạn gõ, và sơ đồ hàng rào zigzag bên dưới cập nhật để cho thấy chính xác văn bản của bạn nằm trên các hàng rào ra sao.

  4. 4

    Đọc, xem và chia sẻ kết quả

    Văn bản đã chuyển đổi của bạn xuất hiện ngay lập tức. Mở sơ đồ hàng rào để xem đường zigzag, rồi 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 thiết lập và văn bản của bạn.

Tìm hiểu về mật mã Rail Fence

Mật mã Rail Fence là gì?

Mật mã Rail Fence, còn gọi là mật mã zigzag, là một mật mã chuyển vị cổ điển. Thay vì thay thế các chữ cái bằng những chữ cái khác như mật mã thay thế làm, nó giữ nguyên mọi chữ cái y hệt và chỉ đơn giản sắp xếp lại thứ tự của chúng. Thông điệp được viết theo đường zigzag lên xuống băng qua một loạt đường ngang tưởng tượng gọi là hàng rào, và văn bản mã hóa được tạo ra bằng cách đọc các hàng rào đó lần lượt nối tiếp nhau.

Vì bí mật duy nhất là số hàng rào, Rail Fence là một trong những mật mã dễ dùng bằng tay nhất. Nó từng được dùng làm mật mã chiến trường nhanh gọn trong Nội chiến Hoa Kỳ và vẫn là một mật mã quen thuộc trong các câu đố, phòng thoát hiểm, thử thách capture-the-flag và các bài học mật mã học nhập môn, nơi nó thường là ví dụ đầu tiên về phép chuyển vị.

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

Chọn một số hàng rào, chẳng hạn ba. Bắt đầu trên hàng rào trên cùng, bạn viết thông điệp mỗi ký tự một cột, di chuyển theo đường chéo xuống hàng rào dưới cùng, rồi nảy ngược lên trên cùng, rồi lại xuống, vạch thành một đường zigzag. Khi mọi ký tự đã được đặt, bạn đọc lại lưới từng hàng rào trọn vẹn một lần, từ hàng rào trên cùng xuống dưới cùng, rồi nối các mảnh đó lại với nhau để tạo thành văn bản mã hóa.

Mọi ký tự đều tham gia vào đường zigzag, nên khoảng trắng và dấu câu được di chuyển vòng quanh giống như các chữ cái thay vì được giữ nguyên vị trí. Số lượng ký tự không bao giờ thay đổi, đó chính là dấu hiệu đặc trưng của một mật mã chuyển vị: văn bản mã hóa luôn là một đảo chữ của thông điệp gốc.

Ví dụ thực hành

Lấy thông điệp WEAREDISCOVEREDFLEEATONCE với ba hàng rào. Viết nó theo đường zigzag đặt W, E, C, R, L, T, E lên hàng rào trên cùng; E, R, D, S, O, E, E, F, E, A, O, C lên hàng rào giữa; và A, I, V, D, E, N lên hàng rào dưới cùng. Đọc các hàng rào theo thứ tự cho ra WECRLTE, rồi ERDSOEEFEAOC, rồi AIVDEN.

Nối lại với nhau, văn bản mã hóa là WECRLTEERDSOEEFEAOCAIVDEN. Lưu ý rằng mọi chữ cái của bản gốc vẫn còn nguyên, chỉ bị xáo trộn thành một thứ tự mới, và kết quả có độ dài đúng bằng đầu vào.

Làm thế nào để giải mã một mật mã Rail Fence

Để giải mã, trước tiên bạn dựng lại hàng rào trống cho số hàng rào đã biết và cùng độ dài thông điệp, đánh dấu mỗi vị trí thuộc về hàng rào nào. Đếm các dấu đó cho bạn biết có bao nhiêu ký tự nằm trên mỗi hàng rào, nhờ vậy bạn có thể cắt văn bản mã hóa thành mảnh có kích thước đúng cho từng hàng rào.

Sau đó bạn đặt mỗi mảnh trở lại lên hàng rào của nó và đọc hàng rào theo thứ tự zigzag ban đầu, hàng rào trên-nảy-xuống-dưới-rồi-lên-lại, để khôi phục văn bản gốc. Công cụ này làm tất cả những việc đó cho bạn: chuyển sang Giải mã, đặt cùng số hàng rào và độ lệch đã dùng để mã hóa, rồi dán văn bản mã hóa.

Hàng rào, độ lệch và khóa

Số hàng rào chính là khóa của mật mã. Với một hàng rào thì không có zigzag và văn bản không đổi, nên khoảng hữu ích bắt đầu từ hai hàng rào. Khi số hàng rào tiến gần độ dài của thông điệp, đường zigzag trở nên phẳng dần và phép xáo trộn yếu đi, điều đó có nghĩa là chỉ những giá trị nằm khoảng giữa hai và một nửa độ dài thông điệp mới sắp xếp lại văn bản một cách có ý nghĩa.

Độ lệch tùy chọn dịch chuyển điểm bắt đầu của đường zigzag, như thể ký tự đầu tiên bắt đầu từ lưng chừng hàng rào thay vì trên hàng rào trên cùng. Để độ lệch ở không sẽ cho ra mật mã chuẩn theo sách giáo khoa; thay đổi nó tạo ra một biến thể liên quan, và phải đặt lại đúng độ lệch đó để giải mã. Một chu kỳ zigzag trọn vẹn trải dài 2 × (rails − 1) cột trước khi mẫu hình lặp lại.

Làm thế nào để phá mật mã Rail Fence

Rail Fence có không gian khóa rất nhỏ. Với một thông điệp có độ dài cho trước, chỉ có một nhúm số hàng rào hợp lý để thử, nên kẻ tấn công có thể đơn giản giải mã với hai hàng rào, rồi ba, rồi bốn, và cứ thế, và đọc bất kỳ kết quả nào có nghĩa. Cuộc tìm kiếm vét cạn này chỉ tốn vài khoảnh khắc ngay cả khi làm bằng tay và tức thì bằng máy tính.

Vì mật mã này là một phép chuyển vị thuần túy, bản thân các chữ cái không bị đụng đến, nên tần suất chữ cái của văn bản mã hóa khớp chính xác với văn bản thông thường. Đó tự nó đã là một manh mối: văn bản có thống kê chữ cái bình thường nhưng đọc lên vô nghĩa là một dấu hiệu mạnh cho thấy một mật mã chuyển vị như Rail Fence đang được dùng.

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

Không. Với quá ít khóa khả dĩ và một cuộc phá vét cạn nhanh chóng, Rail Fence không cung cấp sự bảo vệ thực sự nào cho thông tin cần giữ bí mật. Trong lịch sử nó được coi trọng vì tốc độ và sự đơn giản trên chiến trường hơn là vì độ mạnh, và đôi khi nó được kết hợp với một bước thay thế để tạo ra một mật mã ghép mạnh hơn.

Ngày nay giá trị của nó mang tính giáo dục và giải trí. Đó là một cách lý tưởng để dạy ý tưởng về phép chuyển vị, một cơ chế thú vị cho câu đố và trò chơi, và một mảnh nhỏ của lịch sử mật mã học. Để 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ã rail fence là gì?
Mật mã rail fence là một mật mã chuyển vị cổ điển, còn được biết đến với tên mật mã zigzag. Nó viết thông điệp của bạn theo đường zigzag băng qua một số hàng rào rồi đọc nó ra từng hàng rào một. Nó không thay thế bất kỳ chữ cái nào; nó chỉ sắp xếp lại thứ tự của chúng, nên văn bản mã hóa là một đảo chữ của văn bản gốc.
Mật mã rail fence hoạt động như thế nào?
Bạn chọn một số hàng rào, rồi viết thông điệp theo đường chéo xuống và ngược lên băng qua các hàng rào đó, mỗi ký tự một cột. Khi mọi ký tự đã được đặt, bạn đọc lưới từng hàng rào trọn vẹn một lần từ trên xuống dưới và nối các mảnh lại để tạo thành văn bản mã hóa. Khoảng trắng và dấu câu di chuyển cùng với các chữ cái.
Bạn có thể cho một ví dụ rail fence không?
Với ba hàng rào, thông điệp WEAREDISCOVEREDFLEEATONCE trở thành WECRLTEERDSOEEFEAOCAIVDEN. Hàng rào trên đọc là WECRLTE, hàng rào giữa đọc là ERDSOEEFEAOC, và hàng rào dưới đọc là AIVDEN. Mọi chữ cái gốc vẫn còn đó, chỉ bị xáo trộn, và độ dài không đổi.
Làm thế nào để tôi giải mã một mật mã rail fence?
Chuyển sang Giải mã và đặt cùng số hàng rào và độ lệch đã dùng để mã hóa, rồi dán văn bản mã hóa. Công cụ dựng lại hàng rào, tính ra có bao nhiêu ký tự thuộc về mỗi hàng rào, đổ đầy lại các hàng rào, và đọc đường zigzag ngược lại để khôi phục thông điệp gốc.
Số hàng rào có tác dụng gì?
Số hàng rào chính là khóa. Càng nhiều hàng rào càng tạo ra đường zigzag sâu hơn và sự sắp xếp lại kỹ lưỡng hơn, tới một mức nào đó. Một hàng rào để văn bản nguyên vẹn, và khi số hàng rào tiến gần độ dài của thông điệp, phép xáo trộn lại yếu đi, nên khoảng hữu ích là khoảng từ hai hàng rào lên tới chừng một nửa độ dài thông điệp.
Độ lệch trong mật mã rail fence là gì?
Độ lệch dịch chuyển nơi đường zigzag bắt đầu, như thể ký tự đầu tiên bắt đầu từ lưng chừng hàng rào thay vì trên hàng rào trên cùng. Để nó ở không sẽ cho ra mật mã chuẩn theo sách giáo khoa. Nếu một thông điệp được mã hóa kèm độ lệch, bạn phải đặt cùng độ lệch đó để giải mã nó chính xác.
Mật mã rail fence có thay đổi khoảng trắng và dấu câu không?
Có. Vì nó là một mật mã chuyển vị, mọi ký tự đều tham gia vào đường zigzag, nên khoảng trắng, chữ số và dấu câu được sắp xếp lại cùng với các chữ cái thay vì được giữ nguyên vị trí. Tổng số ký tự luôn giữ nguyên không đổi.
Làm thế nào để bạn phá một mật mã rail fence?
Không gian khóa rất nhỏ, nên bạn chỉ cần thử giải mã với hai hàng rào, rồi ba, rồi bốn, và cứ thế, và giữ bất kỳ kết quả nào đọc được. Cuộc tìm kiếm vét cạn này nhanh ngay cả khi làm bằng tay. Tần suất chữ cái bình thường kết hợp với văn bản bị xáo trộn, không đọc được là một gợi ý mạnh cho thấy một mật mã chuyển vị đang được dùng.
Tại sao rail fence được gọi là một mật mã chuyển vị?
Một mật mã chuyển vị che giấu thông điệp bằng cách thay đổi thứ tự các ký tự của nó thay vì thay thế bằng những ký tự mới. Rail fence làm đúng điều đó: nó giữ mọi chữ cái gốc nhưng di chuyển nó tới một vị trí mới do đường zigzag quy định, nên kết quả là một sự sắp xếp lại của cùng những chữ cái đó.
Mật mã rail fence có an toàn không?
Không. Với chỉ một nhúm khóa khả thi, nó có thể bị phá vét cạn trong vài giây, nên nó không cung cấp sự an toàn thực sự nào cho thông tin nhạy cảm. Tốt nhất nên hiểu nó như một mật mã giáo dục và giải đố. Để có sự bảo vệ 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 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 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 để tôi viết một mật mã rail fence bằng mã lập trình?
Hãy tính, cho mỗi vị trí trong thông điệp, nó rơi vào hàng rào nào bằng cách đếm xuống từ hàng rào trên cùng tới dưới cùng rồi ngược lên theo một chu kỳ lặp lại. Để mã hóa, nối mỗi ký tự vào hàng rào của nó rồi ghép các hàng rào theo thứ tự. Để giải mã, đếm xem mỗi hàng rào chứa bao nhiêu ký tự, cắt văn bản mã hóa thành những mảnh đó, và đọc chúng ngược lại theo thứ tự zigzag. Công cụ chạy trong trình duyệt này dùng đúng cách tiếp cận đó.

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ã hoán vị cột

Mật mã Scytale

Mật mã Caesar

Mật mã Vigenère

Mật mã Atbash

Mật mã Playfair