12 · 29 · 3 · 21 · 29 · 8 · 16 · 7 · 7 · 16 · 13 · 24
nux durissima … frangi debet
24 = a · 20 = e · 16 = i · 11 = o · 5 = u

Ferenc Wesselényi → the King (Leopold I) · reversed-alphabet numerical cipher, Latin · c. 1663–64

Ferenc Wesselényi’s cipher draft to Leopold I, c. 1663–64

Ferenc Wesselényi
fromFerenc Wesselényi
Leopold I
toLeopold I

Magyar Nemzeti Levéltár, Országos Levéltár, E 199 (Wesselényi family archive), 8. pallium 1. 01; DECODE R674, catalogued as simple substitution in numbers, dated 1 January 1664, with no decipherment recorded. A single page of Latin in which the Palatine of Hungary put his military plan for the King into a numerical cipher. The key was recovered from the ciphertext alone. 241 of 244 cipher tokens decrypt to sense; two code numbers stay open. No earlier decipherment or printed edition was found.

Daniel Bourdeau · posted · updated

Method: key recovered from ciphertext-only · Extent: complete

Credits · Contemporary key or decipherment (verification)

At a glanceCiphertext-only break · complete

The letter
A Latin page from the papers of Ferenc Wesselényi, Palatine of Hungary, probably his draft or file copy: it asks the King to have the general join three regiments, camp before a place and make it take an imperial garrison.
Where
Hungarian National Archives, E 199, 8. pallium 1. 01; DECODE R674, dated 1 January 1664 with no decipherment and an unknown recipient.
The cipher
The alphabet written backwards, 24 = a down to 3 = x, with 25, 26, 28 and 29 for a, e, o and u, in sixteen runs of dotted numbers inside the Latin.
How it was read
A substitution solver with a Latin language model gave readable Latin, and the key was fixed by hand from generalis and tria millia hominum. DECODE key R672 has the same reversed alphabet.
What it says
This “very hard nut” must at last be cracked.
Still open
241 of 244 cipher tokens give sense (98.8%). Code 60 (the general) and code 64 (the place) have no surviving key.

01 The record

E 199 is the Wesselényi family archive in the Hungarian National Archives; the leaf also carries an older number, “E 199 IV/3.t.–1”, and the archive’s stamp. DECODE photographed it together with the next item in the folder, R675 (8. pallium 1. 02), a Hungarian letter headed “NB Rottal” in a different number cipher. The images are not in the public domain, so none is reproduced here.

The page is written in one hand. The cipher words sit inside Latin sentences, each number followed by a point. Three corrections show a draft being written: the writer put 14 twice in millia and struck one; he wrote “tandem aliquando necessario” after nux, struck it, and wrote it again a line lower after durissima; and he struck a word after accommodari. A letter as sent would not look like this, so the page is Wesselényi’s own copy, which is why it is in his family’s papers. The heading at the top of the page (“S…zzi”?) is not legible.

02 The cipher

The alphabet is numbered backwards from 24, on a 24-letter alphabet that has w and no j or v:

24 a · 23 b · 22 c · 21 d · 20 e · 19 f · 18 g · 17 h · 16 i · 15 k · 14 l · 13 m · 12 n · 11 o · 10 p · (9 q) · 8 r · 7 s · 6 t · 5 u · (4 w) · 3 x · (2 y · 1 z)

and four more numbers double the vowels: 25 a · 26 e · 28 o · 29 u (27, presumably i, does not occur). Numbers in brackets are not used on this page. The two numbers above 29, 60 and 64, stand for a person and a place.

DECODE key R672 (MNL OL P 1238, Teleki Mihály collection, cipher keys no. 12, dated 1660–1690) has exactly this alphabet, from 24 = a to 1 = z. After it come syllables in fives, 25–29 Ba Be Bi Bo Bu up to 115–119 Za…Zu, and names from 120 (Rex Pol., Turca, Imperator, Cassovia…). This letter does not use that syllable table: here 25–29 are bare vowels, and R672’s 60 = Ka and 64 = Ku give no sense in “Dominus Generalis [60]” or “ad [64] in castris”. The two are related keys, built on the same alphabet, not the same key.

The writer made one slip. Spork is written 7 9 11 8 15, and 9 is q; p is 10 everywhere else on the page (praesidium, sponte, acceptare, temporis, peditum).

03 The decipherment

Cipher words are in bold. Spelling as written (presidium, Snaidau); cleartext transcribed from the image, with (?) where a clear word is doubtful.

Castrorum(?) mutationes etiam necessariae essent, quo facto, si Dominus Generalis [60] regimenta Dominorum Haster, Snaidau et Spork coniungeret, possent ad minimum tria millia hominum constituere, quibus si adiungerentur adhuc duo millia peditum, ut cum illis nos ad [64] in castris collocaremus, quam necessitatem videns [64] forte promptius presidium Maiestatis Vestre reciperent. Quod si vero illud sponte et benevole acceptare nollent, extunc de ulterioribus faciendis actionibus temporis occasioni nos accommodari debebimus, quia hoc est certum(?), quod ista nux durissima tandem aliquando necessario frangi debet. Alioquin non esset bonum, si hoc modo ab indusio quoque nostro timere et formidare deberemus.

Translation. Changes of camp would also be necessary. That done, if the Lord General [60] were to join the regiments of Messrs Heister, Schneidau and Sporck, they could make up at least three thousand men; and if two thousand foot were added to them, so that with them we might take up camp at [64], then [64], seeing the necessity, might more readily receive Your Majesty’s garrison. But if they would not accept it of their own free will, then for the further actions to be taken we shall have to fit ourselves to the occasion of the time, for this is certain: this very hard nut must at last, of necessity, be cracked. Otherwise it would not be good if in this way we had to fear and dread even our own shirt.

Haster and Snaidau are the imperial colonels Heister and Schneidau, spelled by ear; Spork is Johann von Sporck. All three commanded regiments in Hungary in the Turkish war of 1663–64, which ended with the peace of Vasvár in August 1664; the draft belongs to that war rather than to the later years of DECODE’s span. Indusium is an undershirt: to be afraid of one’s own shirt.

04 Method

The starting point was DECODE’s transcription of 2020, in which the transcriber wrote some figures as letters (b for 6, g for 9, i for 1, o for 0). Checked against the photograph, it needed one correction: the run after prius opens with 10, not 20. That gives 244 cipher tokens of 27 kinds.

Three solver runs were tried with the project’s shared 4-gram models. With no limit on homophones, the Latin model filled every slot with i, because the model rates runs of i highly. A strict one-to-one key could not fit Latin at all (25 numbers, a 21-letter Latin model), and on Hungarian it gave text that only looked like Hungarian. With at most two numbers per letter, all eight Latin runs returned the same readable text with a few slips (teneralis, castorsnaidae). Those were fixed by hand from the clear context: si Dominus … generalis gives g e n e r a l i s, and tria millia hominum sets 17 = h. The names, nux (3 = x) and ab indusio were decrypted last.

To check the key and look for 60 and 64, the neighbouring DECODE records were fetched: R675, the Teleki collection keys R665–R673, and the keys of the Vienna conspiracy file (HHStA Fasc. 327 Konv. D, R676–R690). Each was scored against the recovered values. Only R672 agrees, on 19 values. None of them gives the two codes a sense.

05 What remains open

Full texts

The transcription and the decryption of every document on this page, so that the reading can be used and checked. Short files are shown here; all are in the repository.

R674, MNL OL E 199, Wesselényi's Latin draft, c. 1663-64

A Latin draft of Ferenc Wesselényi, probably to Leopold I, in the Turkish war of 1663-64: if the Lord General [60] joins the regiments of Heister, Schneidau and Sporck and 2,000 foot are added, 'we' can camp at [64], which would then more readily accept an imperial garrison; otherwise 'ista nux durissima ... frangi debet'.

Transcription

transcription.txt

# DECODE R674 (MNL OL E 199, 8. pallium 1. 01): cipher runs in order, one run per line.
# From DECODE transcription DOC_R674_D1892 (EK 2020), checked against the image; b->6, g->9, i->1, o->0; after "prius" 10 not 20.
18 20 12 20 8 24 14 16 7 60
17 24 7 6 26 8 7 12 24 16 21 24 29
7 9 11 8 15
6 8 16 25 13 16 14 14 16 24 17 11 13 16 12 5 13 22 11 12 7 6 16 6 5 20 8 20
7 16 24 21 16 5 12 18 20 8 20 12 6 29 8
21 29 28 13 16 14 14 16 24 10 20 21 16 6 29 13
12 28 7 24 21 64 16 12 22 24 7 6 8 16 7
64
10 8 20 7 16 21 16 5 13 13 24 16 20 7 6 24 6 16 7 5 20 7 6 8 20 8 20 22 16 10 20 8 20 12 6
7 10 11 12 6 20 20 6 23 20 12 20 5 11 14 20 24 22 22 20 10 6 24 8 20 12 11 14 14 20 12 6
24 22 6 16 11 12 16 23 5 7 6 20 13 10 11 8 16 7 11 22 22 24 7 16 11 12 16 12 11 7
12 29 3
21 29 8 16 7 7 16 13 24
19 8 24 12 18 16
24 23 16 12 21 5 7 16 28
6 16 13 20 8 20 20 6 19 11 8 13 16 21 24 8 20
Decryption

reading.md

# R674 — reading

Cipher runs in **bold**, deciphered with the key in `key.py` (reversed alphabet, 24=a … 1=z, vowel homophones 25=a,
26=e, 28=o, 29=u; the alphabet of DECODE key R672). Clear text transcribed from the image; `(?)` marks a doubtful
clear-text word. Struck words in ⟦ ⟧. Codes left as [60], [64].

Heading (top centre): "S…zzi" (?), not read with confidence; perhaps a name or "Secreti(?)".

> Castrorum(?) mutationes etiam necessariae essent, quo facto, si Dominus **Generalis [60]** regimenta Dominorum
> **Haster, Snaidau** et **Spork** coniungeret, possent ad minimum **tria millia hominum constituere**, quibus
> **si adiungerentur** adhuc **duo millia peditum**, ut cum illis **nos ad [64] in castris** collo-caremus, quam
> necessitatem videns **[64]** forte promptius **praesidium Maiestatis Vestrae reciperent**. Quod si vero illud
> **sponte et benevole acceptare nollent**, extunc de ulterioribus faciendis **actionibus temporis occasioni nos**
> accommodari ⟦…⟧ debebimus, quia hoc est certum(?), quod ista **nux** ⟦tandem aliquando necessario⟧
> **durissima** tandem aliquando necessario **frangi** debet. Alioquin non esset bonum, si hoc modo **ab indusio**
> quoque nostro **timere et formidare** deberemus.

## Translation

> Changes of camp would also be necessary; this done, if the Lord General [60] were to join the regiments of Messrs
> Heister, Schneidau and Sporck, they could make up at least three thousand men; if two thousand foot were added to
> them, so that with them we might set ourselves in camp at [64], seeing that necessity [64] would perhaps the more
> readily receive Your Majesty's garrison. But if they would not accept it of their own free will and goodwill,
> then for the further actions to be taken we shall have to adapt ourselves to the occasion of the time, for this
> is certain, that this very hard nut must at last, of necessity, be cracked. Otherwise it would not be good if in
> this way we had to fear and dread even our own shirt.

## Notes on the cipher words

- `hastersnaidau` = Haster + Snaidau: the imperial colonels Heister and Schneidau, spelled by ear. 26 (e) occurs only
  here; its value is the vowel slot "Be" of R672 and the only reading that gives a name.
- `spork` is written 7 9 11 8 15: in the reversed alphabet 9 is q and 10 is p; the writer slipped one place (10 is
  used for p everywhere else: presidium, sponte, acceptare, temporis, peditum).
- `nux` (12 29 3): 3 = x in R672; "ista nux durissima … frangi debet", this very hard nut must be cracked.
- `ab indusio quoque nostro timere`: indusium, an undershirt; afraid even of our own shirt.
- The writer duplicated `14` in "millia" (line 5) and struck it: a draft.

## Measurement

244 cipher tokens (`python docs/_check_profile.py --measure targets/wesselenyi1664/transcription.txt`). Read as sense: 241
(all letter tokens, including the slip 9 for p). Unread: code 60 (once), code 64 (twice). 241/244 = 0.988.
Grades: H 239 (letters on the reversed alphabet confirmed by DECODE key R672 and by sense), M 2 (26=e, once, in
"Haster"; the slip 9 for p in "Spork"); the 3 code tokens unread.
Decryption

decode_out.txt

    Stru**? !
    Casennum? m*lamim*? e*a*? necessarie? efhue? , quo Ra^'ce o^~
    di Dominus
>> generalis[60]    [18 20 12 20 8 24 14 16 7 60]
    Regimenta
    Dnoru^'m
>> hastersnaidau    [17 24 7 6 26 8 7 12 24 16 21 24 29]
    et
>> spork    [7 9 11 8 15]
    anquing*nt?, R*ssut ad minimum
>> triamilliahominumconstituere    [6 8 16 25 13 16 14 14 16 24 17 11 13 16 12 5 13 22 11 12 7 6 16 6 5 20 8 20]
    quibus?
>> siadiungerentur    [7 16 24 21 16 5 12 18 20 8 20 12 6 29 8]
    adhuc
>> duomilliapeditum    [21 29 28 13 16 14 14 16 24 10 20 21 16 6 29 13]
    ut um illis?
>> nosad[64]incastris    [12 28 7 24 21 64 16 12 22 24 7 6 8 16 7]
    collo?
    caremus , quam necessitate^'m vidus?
>> [64]    [64]
    forte pro*a?
    priu^'s
>> presidiummaiestatisuestrereciperent    [10 8 20 7 16 21 16 5 13 13 24 16 20 7 6 24 6 16 7 5 20 7 6 8 20 8 20 22 16 10 20 8 20 12 6]
    quod di vero^'? illud
>> sponteetbeneuoleacceptarenollent    [7 10 11 12 6 20 20 6 23 20 12 20 5 11 14 20 24 22 22 20 10 6 24 8 20 12 11 14 14 20 12 6]
    extuno
    di ' ulterioribu*? faciendis
>> actionibustemporisoccasioninos    [24 22 6 16 11 12 16 23 5 7 6 20 13 10 11 8 16 7 11 22 22 24 7 16 11 12 16 12 11 7]
    accommodari? f__e__m__*__i__m__u__s__?
    dibelimu*? , quia hoc est artum , quod ista
>> nux    [12 29 3]
    t__a__n__d___*__m__? a__l__i__q__u__a__n__d__i? m__a__s__s__a__r__i__o__?
>> durissima    [21 29 8 16 7 7 16 13 24]
    dand? ' aliquand?
    necessari '
>> frangi    [19 8 24 12 18 16]
    debe^'t . alioqui?
    un? esset bonum, di hoc modo
>> abindusio    [24 23 16 12 21 5 7 16 28]
    quoq^'* nostro?
>> timereetformidare    [6 16 13 20 8 20 20 6 19 11 8 13 16 21 24 8 20]
    deberemus .
Reading

reading.md

# R674 — reading

Cipher runs in **bold**, deciphered with the key in `key.py` (reversed alphabet, 24=a … 1=z, vowel homophones 25=a,
26=e, 28=o, 29=u; the alphabet of DECODE key R672). Clear text transcribed from the image; `(?)` marks a doubtful
clear-text word. Struck words in ⟦ ⟧. Codes left as [60], [64].

Heading (top centre): "S…zzi" (?), not read with confidence; perhaps a name or "Secreti(?)".

> Castrorum(?) mutationes etiam necessariae essent, quo facto, si Dominus **Generalis [60]** regimenta Dominorum
> **Haster, Snaidau** et **Spork** coniungeret, possent ad minimum **tria millia hominum constituere**, quibus
> **si adiungerentur** adhuc **duo millia peditum**, ut cum illis **nos ad [64] in castris** collo-caremus, quam
> necessitatem videns **[64]** forte promptius **praesidium Maiestatis Vestrae reciperent**. Quod si vero illud
> **sponte et benevole acceptare nollent**, extunc de ulterioribus faciendis **actionibus temporis occasioni nos**
> accommodari ⟦…⟧ debebimus, quia hoc est certum(?), quod ista **nux** ⟦tandem aliquando necessario⟧
> **durissima** tandem aliquando necessario **frangi** debet. Alioquin non esset bonum, si hoc modo **ab indusio**
> quoque nostro **timere et formidare** deberemus.

## Translation

> Changes of camp would also be necessary; this done, if the Lord General [60] were to join the regiments of Messrs
> Heister, Schneidau and Sporck, they could make up at least three thousand men; if two thousand foot were added to
> them, so that with them we might set ourselves in camp at [64], seeing that necessity [64] would perhaps the more
> readily receive Your Majesty's garrison. But if they would not accept it of their own free will and goodwill,
> then for the further actions to be taken we shall have to adapt ourselves to the occasion of the time, for this
> is certain, that this very hard nut must at last, of necessity, be cracked. Otherwise it would not be good if in
> this way we had to fear and dread even our own shirt.

## Notes on the cipher words

- `hastersnaidau` = Haster + Snaidau: the imperial colonels Heister and Schneidau, spelled by ear. 26 (e) occurs only
  here; its value is the vowel slot "Be" of R672 and the only reading that gives a name.
- `spork` is written 7 9 11 8 15: in the reversed alphabet 9 is q and 10 is p; the writer slipped one place (10 is
  used for p everywhere else: presidium, sponte, acceptare, temporis, peditum).
- `nux` (12 29 3): 3 = x in R672; "ista nux durissima … frangi debet", this very hard nut must be cracked.
- `ab indusio quoque nostro timere`: indusium, an undershirt; afraid even of our own shirt.
- The writer duplicated `14` in "millia" (line 5) and struck it: a draft.

## Measurement

244 cipher tokens (`python docs/_check_profile.py --measure targets/wesselenyi1664/transcription.txt`). Read as sense: 241
(all letter tokens, including the slip 9 for p). Unread: code 60 (once), code 64 (twice). 241/244 = 0.988.
Grades: H 239 (letters on the reversed alphabet confirmed by DECODE key R672 and by sense), M 2 (26=e, once, in
"Haster"; the slip 9 for p in "Spork"); the 3 code tokens unread.
Translation

R674_en.md

<!-- English translation of reading.md (Claude Opus 5.5, 23 Oct 2026): DECODE R674, the Latin text with its cipher runs deciphered with the reversed-alphabet key of R672; taken from the translation section of reading.md, checked against the Latin. [60], [64] = codes with no value. The heading "S…zzi" is not read. -->

# R674 (MNL OL E 199), Wesselényi's Latin draft, c. 1663-64: English translation

Changes of camp would also be necessary; this done, if the Lord General [60] were to join the regiments of Messrs
Heister, Schneidau and Sporck, they could make up at least three thousand men; if two thousand foot were added to
them, so that with them we might set ourselves in camp at [64], seeing that necessity [64] would perhaps the more
readily receive Your Majesty's garrison. But if they would not accept it of their own free will and goodwill,
then for the further actions to be taken we shall have to adapt ourselves to the occasion of the time, for this
is certain, that this very hard nut must at last, of necessity, be cracked. Otherwise it would not be good if in
this way we had to fear and dread even our own shirt.

Key: key.py

06 Sources

Transcription, key, decoder and solver runs are in the repository folder targets/wesselenyi1664/.