The Enigma machine often takes centre stage in signal histories, but the manual methods used by field agents were often more practical. In the book Agent Zigzag, Ben Macintyre describes the cipher used by Eddie Chapman. This system was based on the Gronsfeld cipher, which shifts letters using a series of numbers. Chapman’s approach was useful because it avoided the need for a physical codebook. An agent could generate a unique sequence for every message using only a single memorised keyword and the date.

Generating the shift key

The first stage involves processing a secret keyword. Each letter is assigned a number based on its position in the alphabet. For instance, the word “RADIO” results in a specific sequence once the letters are sorted alphabetically.

Next, the agent takes the large number formed by the keyword and multiplies it by the current day of the month. This calculation creates the final numerical key for encryption. Because the multiplier changes daily, a message sent on the 10th uses a different set of shifts than one sent on the 11th.

Preparing and encrypting text

Before the shifts are applied, the message is organised into groups of five letters. If the text does not fit perfectly, extra characters are added—usually the letter “X”—until the total count is a multiple of five.

To encrypt the message, the numerical key is written beneath the text. Each letter moves forward in the alphabet by the number directly below it. If the shift goes past the letter “Z”, it simply continues from the beginning of the alphabet.

A worked example

In this scenario, an agent sends the message “SEND HELP” on the 15th of the month using the keyword “RADIO”.

First, the letters in “RADIO” are numbered by alphabetical order:

  • R = 5
  • A = 1
  • D = 2
  • I = 3
  • O = 4

This produces the base sequence 51234. Multiplying this by the date (15) gives a shift key of 768510.

The message “SENDHELP” is padded with two “X” characters to reach ten letters. The shifts are then applied:

PlaintextSENDHELPXX
Shift key7685107685
CiphertextZKVIIESVFC

The final version is sent in blocks: ZKVII ESVFC. This method remained difficult to decipher without the specific keyword, as the arithmetic ensured the logic of the code changed every twenty-four hours.