Codebusters - Homophonic
On this page(9 sections)
The Homophonic cipher replaces each letter with a two-digit number, but unlike a plain number substitution it gives every letter four possible numbers. Those interchangeable numbers are called homophones ("same sound"): different ciphertext symbols that all stand for the same plaintext letter. Rotating among them hides the common letters from frequency counts. Homophonic is new to Codebusters in 2027, it appears in both divisions, and every exam must use it for at least one special bonus question.
What the rules cover
Both divisions use the same cipher and keyword rule (four different letters); they differ in how many keyword letters you are handed.
| Level | Task | Division B | Division C |
|---|---|---|---|
| Regional | Cryptanalysis: decrypt with a crib whose letters reveal keyword letters | Crib reveals at least 3 keyword letters (3.e.xii) | Crib reveals at least 2 keyword letters (3.e.xi) |
| State and National | Everything from Regional, plus decrypting when keyword letters are given directly | At least 3 letters given (3.f.vi) | At least 2 letters given (3.f.vii) |
| All levels | At least one special bonus question uses Homophonic | 3.i | 3.i |
| All levels | The crib's position on the ciphertext is clearly marked | 3.j | 3.j |
The event format is the same in both divisions under the 2027 rules: up to three students, about 50 minutes, writing utensils only, no notes and no calculator. The resource sheet carries Morse, letter frequencies, Porta and Baconian tables (plus Atbash in Division B), but no Homophonic table, so you build the table yourself on the packet.
How the cipher works
The cipher uses the American Cryptogram Association (ACA) layout:
- The plaintext alphabet has 25 letters, with I and J sharing one column. Write it in normal order: A B C D E F G H I K L M N O P Q R S T U V W X Y Z.
- Under the alphabet sit four rows of numbers. Row 1 holds 01–25, row 2 holds 26–50, row 3 holds 51–75 and row 4 holds 76–00, where 00 stands for 100.
- The keyword has four different letters, one per row. Each row starts its numbering (01, 26, 51 or 76) under its keyword letter, counts up one column at a time to the right, and wraps from Z back to A.
Every letter has one number per row, four in all, and every number belongs to exactly one letter, so decryption is never ambiguous.
The row comes straight from the size of the number, which is the cipher's biggest weakness.
Building the table
- Write the 25-letter alphabet across the top.
- For row 1, find the first keyword letter and write 01 under it. Continue 02, 03 … to the right, wrapping to A after Z, until you reach 25.
- Repeat for rows 2, 3 and 4 with the next keyword letters, starting at 26, 51 and 76. The last number in row 4 is written 00.
Encryption, step by step
- Replace every J with I and drop spaces and punctuation (unless the question keeps word breaks).
- Build the table from the keyword.
- For each plaintext letter, pick any of its four numbers.
- Write the numbers as two-digit groups (01, not 1).
Decryption, step by step
- Note each row's keyword letter (or build the table).
- For each number, find its row from its size, then count from that row's keyword letter.
- Restore word breaks from context.
Worked example: encrypting MEET AT NOON with the keyword FISH
Rows 1 to 4 start under F, I, S and H. Written sideways (one line per letter, so it fits a phone screen), the table is:
| Letter | Row 1 (F) | Row 2 (I) | Row 3 (S) | Row 4 (H) |
|---|---|---|---|---|
| A | 21 | 43 | 59 | 94 |
| B | 22 | 44 | 60 | 95 |
| C | 23 | 45 | 61 | 96 |
| D | 24 | 46 | 62 | 97 |
| E | 25 | 47 | 63 | 98 |
| F | 01 | 48 | 64 | 99 |
| G | 02 | 49 | 65 | 00 |
| H | 03 | 50 | 66 | 76 |
| I/J | 04 | 26 | 67 | 77 |
| K | 05 | 27 | 68 | 78 |
| L | 06 | 28 | 69 | 79 |
| M | 07 | 29 | 70 | 80 |
| N | 08 | 30 | 71 | 81 |
| O | 09 | 31 | 72 | 82 |
| P | 10 | 32 | 73 | 83 |
| Q | 11 | 33 | 74 | 84 |
| R | 12 | 34 | 75 | 85 |
| S | 13 | 35 | 51 | 86 |
| T | 14 | 36 | 52 | 87 |
| U | 15 | 37 | 53 | 88 |
| V | 16 | 38 | 54 | 89 |
| W | 17 | 39 | 55 | 90 |
| X | 18 | 40 | 56 | 91 |
| Y | 19 | 41 | 57 | 92 |
| Z | 20 | 42 | 58 | 93 |
Check before trusting the table: every row should end (25, 50, 75 or 00) one letter before its keyword letter.
To show the homophones, this example cycles through rows 1, 2, 3, 4, 1, 2 … :
| Pos | Plain | Row | Number |
|---|---|---|---|
| 1 | M | 1 | 07 |
| 2 | E | 2 | 47 |
| 3 | E | 3 | 63 |
| 4 | T | 4 | 87 |
| 5 | A | 1 | 21 |
| 6 | T | 2 | 36 |
| 7 | N | 3 | 71 |
| 8 | O | 4 | 82 |
| 9 | O | 1 | 09 |
| 10 | N | 2 | 30 |
The ciphertext is 07 47 63 87 21 36 71 82 09 30. The two Es became 47 and 63, the two Ts 87 and 36, and the two Os 82 and 09.
Worked example: decrypting the same message with the formula
Decoding three of the numbers without the table:
- 63: it is between 51 and 75, so row 3 (keyword letter S). Position p = 63 − 50 = 13. Moving 12 places right from S gives T, U, V, W, X, Y, Z, A, B, C, D, E, so the letter is E.
- 87: row 4 (keyword letter H). p = 87 − 75 = 12. Moving 11 places from H gives I, K, L, M, N, O, P, Q, R, S, T, so T. Note that the count skips J.
- 09: row 1 (keyword letter F). p = 9. Moving 8 places from F gives G, H, I, K, L, M, N, O, so O.
The rest decode the same way to MEETATNOON.
Cracking it with a crib
On the exam you never get the whole keyword. Instead, each crib letter over a number gives the keyword letter of that number's row: run the formula backward.
A crib reveals as many keyword letters as there are different rows among its numbers. The 2027 rules guarantee at least 3 (Division B) or at least 2 (Division C).
Worked example: a Division B cryptanalysis
Ciphertext (22 numbers), with the crib GOLD marked over positions 8 to 11:
93 17 75 30 85 39 02 04 45 69 01 86 71 95 36 14 52 99 96 45 23 68
Step 1: keyword letters from the crib.
| Crib | Number | Row | p | Move p − 1 left | Keyword letter |
|---|---|---|---|---|---|
| G | 04 | 1 | 4 | 3 left of G | D |
| O | 45 | 2 | 20 | 19 left of O | U |
| L | 69 | 3 | 19 | 18 left of L | S |
| D | 01 | 1 | 1 | 0 left of D | D |
Long left counts are faster as right counts: 19 left equals 25 − 19 = 6 right, and 6 right of O is U. Likewise 18 left of L is 7 right, which is S. The fourth pair repeats row 1 and confirms D. Row 4 is still unknown.
Step 2: decode every number in rows 1–3. Mark row-4 numbers (76 and up) as blanks.
| Pos | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8–11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Number | 93 | 17 | 75 | 30 | 85 | 39 | 02 | crib | 86 | 71 | 95 | 36 | 14 | 52 | 99 | 96 | 45 | 23 | 68 |
| Letter | _ | U | R | Y | _ | H | E | GOLD | _ | N | _ | E | R | T | _ | _ | O | A | K |
Sample decodes: 17 is row 1, p = 17, and 16 right of D is U. 75 is row 3, p = 25, and 24 right of S wraps to R.
Step 3: guess a word to unlock row 4. The fragment _URY_HE GOLD _N_ERT__OAK reads as BURY THE GOLD UNDER THE OAK. Position 1 is B over 93: row 4, p = 18, and 17 left of B (8 right) is K. The keyword is DUSK.
Step 4: check the guess on every other row-4 number. 85 → T, 86 → U, 95 → D, 99 → H, 96 → E. All six blanks fit, so the plaintext is BURY THE GOLD UNDER THE OAK.
In Division C the same question might show only a two-row crib, such as ER over 36 14 (rows 2 and 1). You would then decode rows 1 and 2, guess a word to fix row 3, and repeat for row 4.
Solving tactics for tournament conditions
- Sort by row first. Mark each number's row so you see at a glance which rows the crib covers.
- Use differences inside a row. Two numbers in the same row that differ by d are letters d apart in the 25-letter alphabet. If 36 is E, then 40 is I (or J) and 45 is O, before you even know the keyword letter.
- Use the four-different-letters rule. A guessed keyword letter that repeats one you already found is wrong. In Division B this rules out three of the 25 candidates for the last row at once.
- Look for a real word. If the known keyword letters spell most of a common word, test the obvious missing letter first.
- Build the full table only when it pays. For a short message the formula is faster; for a long one, fill the table once and read numbers off.
Scoring and the special bonus
Homophonic answers use the general error rule: two or fewer errors earn full credit, and each extra error costs 100 points, never dropping the question below zero. One wrong keyword letter corrupts every number in its row, roughly a quarter of the message.
Homophonic matters most through the special bonus. Up to three questions that are not Aristocrats, Patristocrats or Xenocrypts are marked as special bonus, and the 2027 rules require at least one of them to be Homophonic. A bonus counts only if the question is solved with no penalty points, and the bonus grows quickly: 150 for one, 400 for two and 750 for all three.
Common pitfalls
How tournaments test this
Homophonic is new for 2027, so there are no archived tournament questions yet, but the rules fix each question's shape. At Regional, expect a cryptanalysis question with a marked crib whose numbers cover at least three rows (Division B) or two rows (Division C). At State and National, you may instead be given keyword letters directly and asked to finish the decryption. At least one Homophonic question per exam is a special bonus question.
Practice
References and further reading
- Science Olympiad, 2027 Codebusters rules for Division B and Division C, at soinc.org. The official rules manual is the authority on scope and scoring.
- American Cryptogram Association, cryptogram.org, cipher type descriptions, including the Homophonic layout used here (25-letter alphabet, rows 01–25, 26–50, 51–75 and 76–00).
- Substitution cipher: homophonic substitution, Wikipedia, for the history of homophones as a defense against frequency analysis.