kiểm tra xem việc mã hóa chữ cái có phân biệt chữ hoa chữ thường hay không (vì xor-ing có khoảng trắng sẽ lật ngược chữ hoa chữ thường) bằng k_sub có mang lại c_sub2 hay không, nếu có, chúng ta nên biết rằng k_sub là phần phụ chính xác của khóa. Nếu không, hãy thử tương tự với giả định rằng m_sub2 là khoảng trắng
Hiện tại bạn đang ghép nối hai luồng bản mã, trong khi bạn có 10 luồng trong số đó. Bạn nên chọn một trong số 10 luồng và sau đó thực hiện XOR với tất cả 9 luồng khác ở cùng một vị trí. Nếu hầu hết các luồng đó trả về các chữ cái (và không có kết hợp XOR không hợp lệ - nhưng điều đó khó kiểm tra hơn) thì bạn có thể khá chắc chắn rằng ký tự được mã hóa là một khoảng trắng và bạn có thể tìm thấy khóa bằng XOR mà bạn thực hiện trong câu trả lời của mình .
Tôi nghĩ đó có thể là trường hợp trong bài tập của Boneh, nhưng hãy lưu ý rằng bạn có thể gặp phải các tổ hợp văn bản rõ ràng cùng nhau cũng có thể tạo ra một chữ cái. Vì vậy, bạn không thể đơn giản thực hiện XOR với hai luồng và xác thực dự đoán của mình theo cách đó. Bạn càng có nhiều luồng, bạn càng chắc chắn; cuối cùng, tất nhiên, bạn cũng có thể xác thực bằng cách xem các tin nhắn văn bản gốc và/hoặc sử dụng các kỹ năng ngôn ngữ của mình để điền vào chỗ trống.
Nếu tôi nhớ không nhầm thì tôi đã chọn nó hơi khác một chút. Tôi lấy một luồng, lặp lại tất cả các ký tự trong bảng chữ cái (lưu ý: các ký tự đầu vào có thể được gọi là "bảng chữ cái" ở đây, ý tôi không phải là ABC) cho từng vị trí, sau đó XOR cả ba cùng nhau. Nếu tất cả các luồng tạo ra kết quả trong bảng chữ cái thì tôi nhấn đúng ký tự. Điều này cho phép bạn chỉ xử lý các ký tự trong bảng chữ cái, không phải các kết hợp XOR kỳ lạ.
Nếu tìm thấy nhiều ký tự, thì hãy sử dụng ký tự tạo ra các ký tự được sử dụng nhiều nhất trong tất cả các luồng cùng nhau (phân tích tần suất).
Nếu điều đó vẫn không tạo ra kết quả, bạn cũng có thể thử các luồng khác (tất nhiên, bạn chỉ phải so sánh luồng 2 với 8 luồng, như bạn đã so sánh # 1 và # 2).
OK, giả sử chúng ta có vị trí đầu tiên (các vị trí không được chỉ định trong tên biến) và một tập hợp các luồng. Bây giờ, chúng ta hãy bắt đầu với luồng đầu tiên và XOR nó với tất cả các luồng khác, được biểu thị bằng $y$ ở đâu $y != 1$.
Bạn có một cặp gồm hai giá trị bản mã bao gồm $c_1 = p_1 \oplus k$ và $c_y = p_y \oplus k$. Vì vậy, XOR'ing cùng nhau mang lại cho bạn $r = c_1 \oplus c_y = p_1 \oplus p_y$ (không có gì mới ở đây). Bây giờ nếu bạn đoán $p_1$ và gọi nó $p'_1$ bạn sẽ nhận được $p'_1 \oplus p_1 \oplus p_y = p'_y$. Bây giờ nếu $p'_y$ là một ký tự không hợp lệ thì rõ ràng $p'_1$ là một dự đoán sai. Nếu bạn không may mắn thì bạn cần thực hiện phân tích tần suất trên tất cả các kết quả $p'_y$. Nhưng hãy nhớ rằng bạn có thể làm điều này với tất cả các $\binom{n+1}2$ cặp trước khi dùng đến điều đó.
Một khi bạn có $p'_1 = p_1$ thì rõ ràng khóa chỉ là XOR với ký tự bản mã: $c_1 \oplus p_1 = k$. Điều đó có nghĩa là bạn chỉ phải lặp lại bảng chữ cái chứ không phải tất cả các phím và bạn thực sự có thể nhanh chóng loại bỏ những lần thử sai.