Mật mã Caesar mã hóa bằng cách dịch mỗi chữ cái bản rõ đi k vị trí trong bảng chữ cái (0≤k≤25, k là khóa). Khi không biết khóa, ta có thể phá mã tự động bằng phân tích tần suất: với mỗi khóa ứng viên k, giải mã bản mã bằng cách dịch ngược k vị trí, rồi so sánh tần suất chữ cái của bản rõ ứng viên với bảng tần suất chuẩn của tiếng Anh bằng thống kê chi-bình phương:
χ2(k)=∑i=AZEi(Oi−Ei)2
trong đó Oi là số lần xuất hiện chữ cái i trong bản rõ ứng viên (giải mã với khóa k), Ei=pi×N với pi là tần suất chuẩn (đơn vị: tỉ lệ, lấy % chia 100) của chữ cái i trong tiếng Anh (bảng bên dưới), N là tổng số chữ cái trong bản mã. Khóa được chọn là khóa k∗ có χ2(k) nhỏ nhất; nếu có nhiều khóa cùng đạt giá trị nhỏ nhất, chọn khóa k nhỏ nhất trong số đó.
Bảng tần suất chuẩn của các chữ cái tiếng Anh (%):
| Chữ | Tần suất (%) | Chữ | Tần suất (%) |
|---|---|---|---|
| A | 8.167 | N | 6.749 |
| B | 1.492 | O | 7.507 |
| C | 2.782 | P | 1.929 |
| D | 4.253 | Q | 0.095 |
| E | 12.702 | R | 5.987 |
| F | 2.228 | S | 6.327 |
| G | 2.015 | T | 9.056 |
| H | 6.094 | U | 2.758 |
| I | 6.966 | V | 0.978 |
| J | 0.153 | W | 2.360 |
| K | 0.772 | X | 0.150 |
| L | 4.025 | Y | 1.974 |
| M | 2.406 | Z | 0.074 |
Ví dụ: với bản mã YMJVZNHPGWTBSKTCOZRUXTAJWYMJQFEDITL (mã hóa từ câu THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG với khóa k=5), thuật toán trên tìm được khóa k∗=5 và bản rõ tương ứng chính là THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG.
Một dòng duy nhất là bản mã C, chỉ gồm các chữ in hoa A…Z (không có khoảng trắng hay ký tự khác), độ dài từ 1 đến 2000.
In ra 2 dòng:
Ví dụ:
Đầu vào:
KHOOR
Đầu ra:
14
WTAAD
Đầu vào:
A
Đầu ra:
22
E
Đang tải editor...