How It Works
MOD-10 // OVERVIEWThe Mod-10 system combines a straddling checkerboard with a one-time pad. The checkerboard converts letters into a compact digit stream; random key digits from the pad are then added modulo 10. The result reveals nothing about the plaintext without the pad.
The term straddling describes how the alphabet is assigned. High-frequency letters get single digits. All others “straddle” across two rows, requiring a row-prefix digit then a column digit. This nearly halves key consumption versus a simple A=01 scheme.
The Checkerboard Layout
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|---|
| E | T | A | O | I | N | |||||
| 7 | 7 | B | C | D | F | G | H | J | K | L |
| 8 | 8 | M | P | Q | R | S | U | V | W | X |
| 9 | 9 | Y | Z | # | . | ? | / | NUM |
Green = single-digit high-frequency letters (E T A O I N). Red = row prefix digits (7, 8, 9). Amber = special chars. NUM (96) toggles digit passthrough; # (92) = word separator. Column 0 is structurally blank.
Encoding
PLAINTEXT → CIPHERTEXT // MOD-10Two steps: convert letters to a digit stream via the checkerboard, then add random key digits modulo 10.
M = row 8, col 1 = 81. E = col 1 = 1.# (code 92) for word separators if needed.7 + 6 = 13 → write 3.| Plaintext | MEET AT DAWN |
| Checkerboard | 81112 92 32 92 733886 |
| Digit stream | 8 1 1 1 2 9 2 3 2 9 2 7 3 3 8 8 6 |
| Key (line 03) | 4 7 3 8 5 2 1 6 4 0 9 3 1 7 6 3 2 |
| (P+K) mod 10 | 2 8 4 9 7 1 3 9 6 9 1 0 4 0 4 1 8 |
| Ciphertext | 28497 1396 91040 418 |
Decoding
CIPHERTEXT → PLAINTEXT // MOD-102−7=−5, +10=5. This recovers the original digit stream.| Ciphertext | 28497 1396 91040 418 |
| Key (line 03) | 4 7 3 8 5 2 1 6 4 0 9 3 1 7 6 3 2 |
| (C−K+10)%10 | 8 1 1 1 2 9 2 3 2 9 2 7 3 3 8 8 6 |
| Read stream | 8,1→M 1→E 1→E 2→T 9,2→# 3→A 2→T 9,2→# 7,3→D 3→A 8,8→W 6→N |
| Plaintext | MEET AT DAWN |
| Encode | (P + K) mod 10 — add, no carry. 8+5=13 → write 3. |
| Decode | (C − K + 10) mod 10 — subtract, add 10 if negative. 2−7=−5, +10=5. |
How It Works
MOD-26 // OVERVIEWThe Mod-26 Vernam cipher assigns each letter a number (A=0, B=1 … Z=25) and adds plaintext numbers to key numbers modulo 26. The result is converted back to a letter. This is the original one-time pad as described by Gilbert Vernam in 1918 and proven secure by Shannon in 1949.
There is no lookup table to memorize or carry. The only prerequisite is the A=0…Z=25 mapping and the ability to add and subtract modulo 26. Operators who prefer to avoid mental arithmetic use a tabula recta — a 26×26 letter grid that turns the operation into a pure table lookup.
Alphabet Number Mapping (A=0 … Z=25)
Memorize in groups of five: A–E = 0–4 | F–J = 5–9 | K–O = 10–14 | P–T = 15–19 | U–Z = 20–25
The Tabula Recta (Optional Lookup)
Find the key letter in the left column. Read across that row to the plaintext letter column. The cell is the ciphertext letter. To decode: find the key letter row, scan for the ciphertext letter, read the column header for plaintext. The purple diagonal is where key=A (zero shift).
Decode: Row = key letter. Scan row for ciphertext letter. Column header = plaintext letter.
Encoding
PLAINTEXT → CIPHERTEXT // MOD-26Convert each letter to its number, add the key number, reduce mod 26, convert back to a letter. Or skip the arithmetic entirely using the tabula recta.
M=12, E=4, T=19, A=0, and so on.M(12)+X(23)=35, −26=9=J. Or use the tabula: row X, column M = J.| Plaintext | M E E T A T D A W N |
| P (A=0) | 12 4 4 19 0 19 3 0 22 13 |
| Key (line 03) | X K Q P L M H S B D |
| K (A=0) | 23 10 16 15 11 12 7 18 1 3 |
| (P+K) mod 26 | 9 14 20 8 11 5 10 18 23 16 |
| Ciphertext | JOUIL FKSXQ |
Decoding
CIPHERTEXT → PLAINTEXT // MOD-26J(9)−X(23)=−14, +26=12=M. Or use tabula: row=key letter X, scan for ciphertext J, column header is plaintext M.| Ciphertext | JOUIL FKSXQ |
| C (A=0) | 9 14 20 8 11 5 10 18 23 16 |
| Key (line 03) | X K Q P L M H S B D |
| K (A=0) | 23 10 16 15 11 12 7 18 1 3 |
| (C−K+26)%26 | 12 4 4 19 0 19 3 0 22 13 |
| Plaintext | MEETATDAWN |
| Encode | (P + K) mod 26 — add numbers, subtract 26 if ≥26. M(12)+X(23)=35, −26=9=J. |
| Decode | (C − K + 26) mod 26 — subtract, add 26 if negative. J(9)−X(23)=−14, +26=12=M. |
| Tabula enc | Row = key letter. Column = plaintext letter. Cell = ciphertext letter. |
| Tabula dec | Row = key letter. Scan row for ciphertext letter. Column header = plaintext letter. |
Key Material
GENERATION // DISTRIBUTION // DESTRUCTIONThe security of both systems depends entirely on the key. A weak key destroys the information-theoretic guarantee. The rules are absolute.
Example line:
47385 21640 93718 02564 87931 46207
Example line:
XKQPL MHSBD NRFWY VCZJO UTEIG AQLPK
| Format | Numbered lines, 30 key units per line. Each pad has a unique serial. Both parties hold identical numbered copies. |
| Distribute | Physical exchange only — never transmitted electronically. The only key exchange moment; treat it accordingly. |
| Use | Lines in sequence. Pad line number travels in the message header in plaintext — not sensitive. Recipient needs it. |
| Destroy | Burn or dissolve each line immediately after use. Nitrocellulose (flash paper) ignites completely in under one second with no ash. |
| NEVER | Reuse any pad line. VENONA: Soviet reuse of ~35,000 pages under WWII production pressure gave analysts partial recovery of ~3,000 messages over 30 years. Only the reused key material was broken — never the cipher itself. |
Comparison
MOD-10 vs MOD-26 // SIDE BY SIDE- Key: random digits (d10 dice)
- Ciphertext format: digit string
- Encoding: checkerboard lookup required
- Arithmetic: base-10, most natural for humans
- Efficiency: ~1.6 key digits per letter average
- Self-delimiting, no separator metadata leaked
- Hidden layer: checkerboard layout is a secret
- Proven: Soviet intelligence, numbers stations
- Error: wrong digit can cascade through stream
- > Key: random letters (no table needed)
- > Ciphertext format: letter string
- > Encoding: A=0…Z=25, or tabula recta
- > Arithmetic: mod-26, less intuitive without tabula
- > Efficiency: exactly 1 key letter per plaintext letter
- > No table to carry or compromise
- > Ciphertext blends into ordinary letter text
- > Vernam 1918, Shannon 1949, diplomatic use
- > Error: each letter is independent, no cascade
| Property | Mod-10 + Checkerboard | Mod-26 Vernam | Nihilist | Solitaire |
|---|---|---|---|---|
| Security | Perfect OTP | Perfect OTP | Perfect OTP | Computational |
| Key format | Digits | Letters | Digit pairs | Card deck order |
| Ciphertext | Digits | Letters | Numbers | Letters |
| Lookup table | Checkerboard | None / Tabula | Polybius sq. | Complex procedure |
| Encode speed | Fast | Medium | Medium | Slow |
| True OTP | Yes | Yes | Yes | No (PRNG) |
Templates
PRINT-READY // FIELD USE| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
| E | T | A | O | I | N | |||||
| 7 | 7 | B | C | D | F | G | H | J | K | L |
| 8 | 8 | M | P | Q | R | S | U | V | W | X |
| 9 | 9 | Y | Z | # | . | ? | / | NUM |
Row prefix 7,8,9: read next digit for column | Top-row digit 1-6 = single letter | # (92) = word sep
DEC: convert to numbers, subtract key number, +26 if negative | (C-K+26) mod 26
Groups: A-E=0-4 F-J=5-9 K-O=10-14 P-T=15-19 U-Z=20-25