Click for homepage
OD Poem code
Toen onze mop een mopje was

The Poem Code is a simple insecure cryptographic method, that was used during World War II by the British Special Operations Executive (SOE), to communicate with their agents in Nazi-occupied Europe [2]. The variant featured here, was used by the Dutch clandestine organisation Ordedienst (OD), for communication with the Dutch Government and intelligence service in exile in London.


A full description of this variant, in the Dutch language, was given by Chief Telegraph Operator of the OD, Ton van Schendel, in a 7-page document [A] that he issued after the war, as part of a more complete account of his involvement with the OD and his capture by the Germans [1]. Van Schendel and his men used it for communication with the Dutch Intelligence Service in London (BI) – under supervision of the SOE – until it was replaced by more secure codes, like CODE 101.

Related items
Whaddon Mk-VII (Paraset) spy radio set
Complete OD radio set
OD transmitter
TX
OD receiver
RX
OD Wavemeter
Morse key
Key
Procedure
Requirements
For a proper and secure exchange of messages between the Radio Service (BR) of the OD in occupied Netherlands and the Dutch intelligence service (BI) in London, the Code Officer (CO) needed two things:

  • A pre-agreed poem
  • A secret number
The secret number had been pre-arranged with London, and was different for each resistance organisation. It had usually been supplied by a courier, for example via the so-called Swedish Route (passed to the diplomatic service in Sweden and then by boat to the Netherlands). In this example we will use the secret number 58265, and use Dutch poem at the top of this page.

The code is based on the first 20 words of the famous Dutch poem 'Toen onze mop een mopje was', as shown above. Note that the exact wording may vary over time and place, and may differ from the version that people in The Netherlands learned as a child. Each word is now numbered:

  1. TOEN
  2. ONZE
  3. MOP
  4. EEN
  5. MOPJE
  1. WAS
  2. HET
  3. AARDIG
  4. HEM
  5. TE
  1. ZIEN
  2. NU
  3. BROMT
  4. HY
  5. ALLE
  1. DAGEN
  2. EN
  3. BYT
  4. NOG
  5. BOVENDIEN
Message
The message can now be prepared. A full stop (.) is replaced by the word STOP. Spaces are omitted, but in case the result is ambiguous, it may be replaced by the letter 'X'. Suppose the following text has to be encrypted:

    READY FOR ACTION NOW STOP CONFIRM GO AHEAD AS PLANNED BY BROADCASTING THE
    AGREED MESSAGE VIA RADIO ORANGE STOP WAITING FOR FURTHER INSTRUCTIONS STOP
    
Three randomly selected letters must be added to the end of the message. They will be used as the callsign on the next transmission. In this case, we will choose the callsign UXV and add it at the end of the message. The complete message now looks like this:

   READYFORACTIONNOWSTOPCONFIRMGOAHEADASPLANNEDBYBROADCASTINGTHE
   AGREEDMESSAGEVIARADIOORANGESTOPWAITINGFORFURTHERINSTRUCTIONSSTOPUXV

It is important that the total length of the message (including the callsign) is a multiple of five, so that the message can be sent in 5-letter groups. The above message has a total length of 128 letters, which means that we have to add two letters in order to obtain a multiple of five (130). To make it simple, we will add the letters QW at the beginning of the message:

   QWREADYFORACTIONNOWSTOPCONFIRMGOAHEADASPLANNEDBYBROADCASTINGTHE
   AGREEDMESSAGEVIARADIOORANGESTOPWAITINGFORFURTHERINSTRUCTIONSSTOPUXV


Message key
We will now pick a random number of words from the poem, for example: ONZE WAS ZIEN ALLE, which together form the KEY of our message: ONZEWASZIENALLE. In this case, the key is 15 characters long. Furthermore, we will remember the positions of the words ONZE (2), WAS (6), ZIEN (11) ALLE (15), so that they can later be used to construct the message indicator.

As the KEY is 15 characters long, we will use a grid with 15 columns, and write out the KEY at the top. Next, we will sort the letters of the KEY in the order of the alphabet and number them sequentially. Duplicate letters simply get the next sequential number. The first occurence of the letter 'A' is '1', the second occurance is '2'. B, C and D do not occur. The first 'E' is '3', the second 'E' is '4', the third 'E' is '5', and so on, until each column has a unique number, as follows:

O N Z E W A S Z I E N A L L E
11 9 14 3 13 1 12 15 6 4 10 2 7 8 5
Our complete message is now written out in the grid from left to right, using 9 rows of the grid and leaving the last 5 positions blank. As follows:

O N Z E W A S Z I E N A L L E
11 9 14 3 13 1 12 15 6 4 10 2 7 8 5
Q W R E A D Y F O R A C T I O
N N O W S T O P C O N F I R M
G O A H E A D A S P L A N N E
D B Y B R O A D C A S T I N G
T H E A G R E E D M E S S A G
E V I A R A D I O O R A N G E
S T O P W A I T I N G F O R F
U R T H E R I N S T R U C T I
O N S S T O P U X V          
We will now read each column of the grid from top to bottom, in the order of the numbers written under the KEY — 1, 2, 3, ... 15 — and write them down in groups of five letters each. As follows:

   DTAOR AAROC FATSA FUEWH BAAPH SROPA MONTV OMEGG EFIOC SCDOI
   SXTIN ISNOC IRNNA GRTWN OBHVT RNANL SERGR QNGDT ESUOY ODAED
   IIPAS ERGRW ETROA YEIOT SFPAD EITNU

Message indicator
We will have to inform the recipient of the words we have choosen to create the KEY. This is done by taking the position numbers of the words that form the KEY, adding a secret (pre-arranged) number to each of them, and converting the result to five letters. This is done as follows:

The position of each of the words ONZE WAS ZIEN ALLE in the poem, are 2, 6, 11 and 15, whilst our scret number is 58265. The digits of the secret number are now used as separate numbers and added are to the KEY positions, after which the result is converted to the letters of the alphabet, using the following substitution table (which has the order of the alphabet):

  1 A 11 K   21 U  
  2 B 12 L   22 V  
  3 C 13 M   23 W  
  4 D 14 N   24 X  
  5 E 15 O   25 Y  
  6 F 16 P   26 Z  
  7 G 17 Q        
  8 H 18 R        
  9 I 19 S        
  10 J 20 T        
This result in a message indicator of five letters, that will be added to the beginning of our message. In order to detect transmission errors, a check group will be added at the end of our message. This check group is constructed from the message indicator by converting it using the substitution table above, swapping the letters from the first two columns only. This means, for example that 'C' becomes 'M' and that 'R' becomes 'H'. The letters U to Z are not converted.

          Position of the KEY words      2  6 11 14
                      Secret number   5  8  2  6  5
                                     —————————————— +
                             Result   5 10  8 17 20
                 Convert to letters   ↓  ↓  ↓  ↓  ↓
                  Message Indicator   E  J  H  Q  T
                        Check group   O  T  R  G  J


We will now place the Message Indicator at the beginning of our message and the check group at the end. Our message will now look like this:

   EJHQT DTAOR AAROC FATSA FUEWH BAAPH SROPA MONTV OMEGG EFIOC
   SCDOI SXTIN ISNOC IRNNA GRTWN OBHVT RNANL SERGR QNGDT ESUOY
   ODAED IIPAS ERGRW ETROA YEIOT SFPAD EITNU OTRGJ

Sending the message
When sending the first message in morse code, the stations will use the default callsigns HLD (Holland) and OZX (UK). For each message that follows the initial one, the callsign is used as specified in the last three letters of the previous message. Each message is prefixed by a start sign, followed by a sequential message number and the number of groups that follow.

             Call  OZX OZX de HLD   OZX OZX de HLD ...
   Terminator (+)  · — · — ·
          End (k)  — · — 
Answer HLD HLD de OZQ HLD HLD de OZQ ... Terminator (+) · — · — · End (k) — · —
Start sign — · — · — Prefix nr 1 28 gr Separator (=) — · · · — Message EJHQT DTAOR AAROC FATSA FUEWH ... OTRGJ Terminator (+) · — · — · End (k) — · —

If the recipient has taken the message without problems, it will be confirmed as follows:

   R R nr 1 R R    · — ·  · — ·  nr 1  · — ·  · — ·

If certain groups were received with errors, the recipient will ask these groups to be resent. For example, when groups 12 and 16 were not taken correctly, the recipient will send the following message, followed by a regular confirmation:

   rpt gr 12 gr 16 k

For decoding a message, the above precedure has to be reversed.



Documentation
  1. Original description of the OD Poem code 'Toen onze mop een mopje was...' 1
    Ton van Schendel. Date unknown.
  1. Copy of the original document kindly provided by Cor Moerman [3].

Literature
  1. Leo Marks, Between Silk and Cyanide
    1998. ISBN 987-0-684-86780-9.
References
  1. A.S.M. van Schendel, Mijn werkzaamheden als chef-marconist van de OD en mijn belevenissen in de gevangenis
    Organisation of the Interal Radio Service (BR) of the OD and the radio links with the UK.
    Post-war report, in Dutch language. Date unknown.

  2. Wikipedia, Poem code
    Retrieved January 2021.

  3. Cor Moerman, Original description by Ton van Schendel
    October 2008.
Further information
Any links shown in red are currently unavailable. If you like the information on this website, why not make a donation?
Crypto Museum. Created: Saturday 02 January 2021. Last changed: Friday, 14 May 2021 - 13:54 CET.
Click for homepage