Vì mật mã Caesar chỉ có tối đa 26 khóa có thể (k=0,1,…,25), một cách phá mã đơn giản là thử vét cạn (brute-force) tất cả các khóa. Nếu kẻ tấn công biết trước một cụm từ khóa (gọi là crib) chắc chắn xuất hiện đâu đó trong bản rõ, họ có thể thử từng khóa k để giải mã toàn bộ bản mã, rồi kiểm tra xem cụm từ đó có xuất hiện như một xâu con của bản rõ vừa giải hay không.
Cho xâu bản mã C (chỉ gồm chữ in hoa A-Z, không chứa khoảng trắng) và một cụm từ khóa W (chỉ gồm chữ in hoa A-Z) được biết chắc chắn xuất hiện là xâu con liên tiếp trong bản rõ, hãy tìm khóa k nhỏ nhất trong khoảng [0,25] sao cho khi giải mã C với khóa k, cụm từ W xuất hiện là xâu con của bản rõ thu được. Nếu không tồn tại khóa nào thỏa mãn, in ra "IMPOSSIBLE".
Ví dụ: C= "DWWDFNDWGDZQ", W= "ATTACK". Thử k=3: giải mã được "ATTACKATDAWN", chứa "ATTACK" ⇒ đáp án là k=3 và bản rõ "ATTACKATDAWN".
Dòng 1: xâu bản mã C chỉ gồm chữ in hoa A-Z, độ dài từ 1 đến 2000. Dòng 2: cụm từ khóa W chỉ gồm chữ in hoa A-Z, độ dài từ 1 đến 50.
Nếu tồn tại khóa thỏa mãn: in ra 2 dòng — dòng 1 là khóa k nhỏ nhất tìm được, dòng 2 là bản rõ đầy đủ tương ứng với khóa đó. Nếu không tồn tại khóa nào thỏa mãn: in ra đúng một dòng "IMPOSSIBLE" (không có dấu ngoặc kép).
Ví dụ:
Đầu vào:
HELLO
ABCDEFGHIJ
Đầu ra:
IMPOSSIBLE
Đầu vào:
DWWDFNDWGDZQ
ATTACK
Đầu ra:
3
ATTACKATDAWN
Đang tải editor...