Monoalphabetic cipher¶
Estimated time to read: 2 minutes
Mar 01, 2020 · ~5 minutes
Monoalphabetic cipher là loại mật mã thay thế trong đó mỗi kí hiệu (chữ, chữ số, kí tự,...) trong văn bản thuần túy được ánh xạ tới mội kí hiệu (chữ, chữ số, kí tự,...) cố định trong bản mã. Trong đó mật mã Caesar là một mô tả điển hình cho Monoalphabetic cipher
Mật mã Caesar là loại mật mã thay thế từng chữ cái (trong bảng chữ cái) trong văn bản thuần túy bởi một chữ cái khác (trong bảng chữ cái).
Ví dụ
Ta có bảng ánh xạ các chữ cái tương ứng bởi bản rõ (plaintext) và bản mã (cipher) như sau:
Plaintext | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Cipher | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G |
Từ bảng ánh xạ trên, với Cipher = "KLBALYP"
thì ta được Plaintext = "DEUTERI"
.
Từ ví dụ trên, chú ý kĩ thì ta cũng dễ dàng tạo lập được thuật toán giải mã loại mã hóa này một cách dễ dàng. Gọi \(k, 1\le k \le 25\) là độ dời kí tự giữa bản rõ (plaintext) và bản mã (cipher). Ta có thuật toán tìm bản mã khi có bản rõ như sau:
- \(Cipher[i] = E\big(k, Plaintext[i]\big) = \big(Plaintext[i] + k\big) \ mod \ 26\)
- \(Plaintext[i] = E\big(k, Cipher[i]\big) = \big(Cipher[i] - k\big) \ mod \ 26\)
Ngoài ra, người ta còn gọi loại mã hóa như trên là mã hóa ROT-X1 với \(1\le X \le 25\)