I have already mentioned on this blog that September 2026 is likely to go down in the history of codebreaking. Over the past few weeks, several long-unsolved cryptograms have been deciphered with the help of artificial intelligence.
As a result, I can barely keep up with writing blog posts about these breakthroughs. Today comes another one. This time, the subject is a cipher mystery that appeared on the Top 50 list of my former Cipherbrain blog. More specifically, it concerns five encrypted messages left behind by the German spy Walter Koehler.
These ciphertexts are listed in the unsolved crypto mysteries section of this webseite.
A triple agent in wartime America
Walter Koehler was a triple agent during World War II. Sent to the United States by German intelligence, his mission was to collect information relevant to the war effort. However, the Americans quickly uncovered his activities. After his arrest, he was forced to operate as a double agent, transmitting reports to Germany that contained false information.
Koehler nevertheless managed to inform his German handlers about his true situation and also succeeded in sending uncensored information. Five encrypted messages attributed to him have survived. The Abwehr forwarded them internally to Paris in February 1944, presumably because they contained sensitive information that had not been screened by American censors. At the time, intelligence officers in Paris were desperately trying to collect information about the expected Allied invasion.
In 1981, David Kahn published the five cryptograms in Cryptologia after discovering them in an archive. In July 2013, I introduced them on this blog, in 2017 I put them on my Top 50 list. Since then, I have referred to them as the Koehler cryptograms. The five ciphertexts, ranging from 137 to 237 letters in length, remained unsolved for decades.
An
Abwehrleitstelle Frankreich
Paris Funkstelle
Sofort vorlegen!
Betr.: Koehler
237
Ybtat mqfvo dvbis prito kecqg kokik kyiwm zuarj
alyia qtxvi vxzya szgou skiqn rbqjq nogex ezdnf
vusda zurop ixklo cmnbl grdhz swmch kupef pzlej
hbord wkkhu vthjk sfwda jepmu izvig kzlau rdrxx
mdecs spozv eeeod dlmdz nqmia pidwg xdcyy mvkso
hmmii impwq nkipa mljvm sqsbb glevn sktlq tn.
178
Eekao parwo xiavy pejux lhnjh pbqdd vdvxb mdiia
gwymn zbivm abuws dwoug djozl ylaug loaea ilihj
swjft oetad tjisn avaqn sodwb wzaxe zvoxg xpgzv
adurm shvxx xfmuq pdpvq dqwtu fryok xfvcp ydzwm
ofwfl uzfne qsslo avl.
137
tziqb lqqxs kinod mbvil sukms syarh mhzvp tvswm
ayddg rixyy omfzm ugfzz aznqe ljuyi ygwuo qmdbi
vcxgz rmzno pessh gpoyx qqlei xmaoj buugz czfdl
yzmkp gsmfm dteze oxmos.
140
dmxkb kqnvh zzeek beoop ygcca yvepv tykmt iykfl zkacv
uxiyd kruwy vnjvp xyeqp jpmfo abzpt mjtdy zvzky bjgze
vdtyd zeejw zumjp ivsna gsmzq dltxb qjqqj fnpta mqted
skijj.
229
fpoxa tijyp qrerq znqst zasnk zarvq hhsmw vlhfg pyhqc
yuirf fsgoi twgdg sbphc fkfza bpegh jzujn wtsxp ijamg
tzdto hxzdn uivww tizoc axkye lhmdn sfzjo omrhb zpith
hkisf anvdr ynhqk syrgi ltxos wabom dzwlb byava sjomn
qqszs adddu greao albon lxzgi iwpnf uzgui jgmya ksqfw
zsjl.
After I first presented the Koehler cryptograms in 2013, they attracted occasional interest from amateur cryptanalysts, but no convincing solution emerged. Naturally, many readers assumed that Koehler had used an Enigma machine. However, that was unlikely. During World War II, German agents employed a surprisingly large variety of cipher systems. I am personally aware of at least twenty different methods used by German intelligence operatives. Without knowing which system Koehler had chosen, the cryptograms proved extremely difficult to attack.
Viktor’s break-in
On September 19, I received an email from blog reader Viktor from Ostrava in the Czech Republic. He had been working on the Koehler cryptograms and reported partial success. According to his findings, the messages were encrypted using a running-key cipher with German plaintext and a Dutch prayer book serving as the key.
A running-key cipher is essentially a Vigenère cipher whose key is as long as, or longer than, the plaintext. Instead of using a short keyword, the cryptographer takes the key from a book or some other text source. If a truly random key is used and never repeated, the result is a one-time pad.
Viktor succeeded in deciphering portions of two messages. For example, he obtained the following fragment from Message 4:
mir wieder neue hoffnung gegeben xx iq habe sqon eine adresse … verkaufen kann
And from Message 5:
x es folgen weitere autonummern festgestellt in x newyork …
Even more importantly, Viktor identified parts of the keytext. It appeared to originate from a religious publication written in Dutch. Still, the remaining sections proved difficult. The messages contained names, license plate numbers, abbreviations, and other irregularities. Some lengths seemed inconsistent, suggesting transcription errors or intentionally inserted null characters.
Eren’s solution
A week later, on September 26, I received another email about the Koehler cryptograms. This one came from 22-year-old cybersecurity researcher Eren Bozbulut from İzmir, Turkey. Eren has a background in software engineering and specializes in blockchain security. Like many readers before him, he encountered the Koehler messages through my list of unsolved ciphers.
Unlike many earlier researchers, however, Eren had powerful AI tools at his disposal. He worked on the problem together with GPT-6 Astra and Daybreak Blue. According to Eren, the AI-assisted investigation initially explored numerous possibilities. Several cipher families were tested, including Enigma-related approaches, but none produced meaningful results.
Then, the AI discovered an online collection from the U.S. Coast Guard entitled Controlled Agent Communications, 1944–1945. Among the documents was a German message numbered 57, dated February 4, 1944.
The content dealt with whether a U.S. citizen required special documents for domestic travel. Eren noticed similarities between this text and Koehler’s third cryptogram. Assuming that the archived message and the ciphertext might be related, he combined the German plaintext candidate with the encrypted message under the rules of a running-key cipher.
The result was astonishing. The derived keytext turned out to be Dutch. Even more remarkably, the AI identified its source: a page from the prayer book Offeraltaar des gebeds, published in Amsterdam in 1893.
Starting at the words trooster der zielen (“comforter of souls”), the page provides exactly the sequence of characters needed to decrypt Message 3.
How the Cipher Works
Eren’s analysis showed that two details are particularly important. First, the second five-letter group of Message 3, LQQXS, serves only as an indicator and must be skipped entirely without consuming any key letters. Second, all spaces and punctuation are removed from the Dutch prayer text. The running key begins with the first T of TROOSTER.
Using the numerical convention A = 0, B = 1, …, Z = 25, decryption follows the formula:
Plaintext = (Ciphertext + Key + 1) mod 26
For example:
T + T + 1 → N
Z + R + 1 → R
Applying this process yields a raw plaintext beginning with:
NR X FUENF SIEBEN XX IHRE NR X SIEBEN EINS XX FUER DAS LAND …
The Remaining Messages
Eren succeeded in decrypting the remaining four Koehler cryptograms as well. They all use the same running-key principle, although different sections of the prayer book were employed as keys. Detailed plaintexts, key alignments, and methodological notes can be found in Eren’s write-up.
The exact content of the messages is less important than the fact that the mystery has finally been resolved. A cryptographic puzzle that survived for more than eighty years and resisted analysis for over a decade after its publication has now yielded its secrets.
If you want to know more, check Eren’s publication here.
Yet Another Lesson About AI and Cryptanalysis
Once again, I am fascinated by what happened here. Viktor and Eren independently arrived at the essential idea almost simultaneously. Both recognized the running-key nature of the cipher and the Dutch origin of the key material. Eren then completed the puzzle with substantial help from modern AI systems.
Back to Cipherbrain Blog