01 The document
The image Schmeh posted, which Tony Gaffney had sent him, is not the Milan paper itself but a Roman broadsheet: Dispaccio del Card. Soglia. Tratto dal giornale l’Italia del Popolo 30 Giugno, printed by Clemente Puccinelli in Via Lata. Commenters identified the paper within a day (Helmut Winkler, Hans Jahr: L’Italia del Popolo, the organ of Mazzini’s Associazione nazionale italiana, year I, no. 40). Its preface says what the editors knew:
Two documents follow. The first is a letter wholly in clear, no. 6235: the Pope has read the nuncio’s two letters of 27 May and approves his decision to follow the Emperor at the Austrian foreign minister’s invitation; “what the instructions are, you will learn from my contemporary dispatch in cipher”; the language of the Ministry is not to be confused with the Pope’s own will. The second is the cipher dispatch, which opens in clear (“having news of your departure from Vienna and of your removal to that city, where His Imperial Majesty now resides, I take the occasion to send you this dispatch there”), then runs fourteen lines of digits, breaks into clear for one sentence (“To save time you must at once make the present dispatch known”), ends with two more lines of digits, and is signed G. Card. Soglia, Rome, 15 June 1848. At the foot: Un premio non tenue è destinato al migliore interprete di queste cifre.
The transcription used is Joe’s, posted as the fourth comment under Schmeh’s article on 15 December 2014. It was checked line by line against the scan cut into strips, and it is right except in one place: on line 12 the printed …2251242496774740906… lost a 4. Corrected, the block is 955 digits. The printer made one error of his own, taken up below. Where the print has a dot in the line (3099.7.39, 67367.067), it is ignored likewise: the text reads without it.
02 The system
Three things are visible in the digits before any key is guessed.
- 5 divides words. Split at every 5, the block falls into 102 non-empty runs, and 92 of them have an even number of digits. The ten odd ones are seven lone digits 1 to 4, one run that ends in such a digit, one print error and one stray 8. A lone 1, 2, 3 or 4 is punctuation: comma, semicolon, colon, full stop. The full stop 4 stands immediately before the printed clear sentence. The 5 is not written at every word boundary; short words are often run together (conmio, oper, perdilui).
- 8 marks a code group. The digit 8 never occurs as the second digit of a pair. Where it occurs it begins a four-digit group: 8247, 8319, 8620. Pairs are drawn from the eight digits 0 1 2 3 4 6 7 9, which gives a table of 64 cells.
- The pairs are letters and syllables. 355 pairs in all, 56 distinct: more symbols than an alphabet needs, far fewer than a code.
The table as read. Rows are the first digit, columns the second; a dash is a cell that does not occur in this message.
| 0 | 1 | 2 | 3 | 4 | 6 | 7 | 9 | |
|---|---|---|---|---|---|---|---|---|
| 0 | – | del | no | k | s | ta | al | a |
| 1 | chi | m | in | – | ma | c | – | p |
| 2 | gli | e | ne | la | n | che | – | – |
| 3 | qu | da | – | b | mi | t | con | d |
| 4 | de | l | di | se | e | o | al | r |
| 6 | il | f | – | per | si | st | i | te |
| 7 | v (u) | ti | g | – | z | to | b | p |
| 9 | c | f | l | d | g | m | n | s |
Homophones: e 21, 44; b 33, 77; c 16, 90; d 39, 93; f 61, 91; g 72, 94; l 41, 92; m 11, 96; n 24, 97; p 19, 79; s 04, 99; al 07, 47. The eight empty cells (00 13 17 27 29 32 62 73) are unused here, not unread. a has one cell, 09, and it is the commonest group in the text (38 times). 70 is u and v; doubled, it is the w of 92 70 36 74 46 70 70 Lutzovv.
Code words and stems. The 8XXX groups stand for whole words or for stems that letters complete: 40 20 8424 67 degli (ordin)i, 19 09 04 99 09 8446 67 passa(port)i, 41 21 8433 16 67 19 46 le (parte)cipo. Nine are fixed by their context beyond reasonable doubt, and their values rise with the alphabet:
| 8319 | 8340 | 8374 | 8422 | 8424 | 8429 | 8433 | 8446 | 8620 |
|---|---|---|---|---|---|---|---|---|
| Imperatore | istruzione | Monsignor | opportuno | ordin- | Padre | parte | port- | Roma |
This is the design Kent Ramliden described in his comment of 7 January 2015 from the cipher of the Vienna nunciature at the Congress of 1814: dinomes for letters and syllables, a four-digit series for words and names, and 5 as a word divider. There, the word series began with 7 and the dinomes avoided 5 and 7; here it begins with 8 and they avoid 5 and 8. His parse, with 7 as the marker, could not work on this text; with 8 it does.
The print error: the first passaporti is printed 19 09 05 99 09 8446 67. A 5 inside it would cut the word in two. The second passaporti, later in the text, is 19 09 04 99 09 8446 67, so the printer set a 5 for a 4. A lone 8 after si on line 1 is unexplained.
03 How it was broken
- Simple substitution fails, and the failure is informative. With 5 taken as the word break, a one-letter-per-pair annealer with 5-gram
models in Italian, French and Latin got nowhere, about −3.4 nats a character in each language. The same solver was run on a synthetic control: an Italian
text of the same length, enciphered homophonically in 68 two-digit symbols with the same word breaks (
synth.py). It read the control exactly. So the solver was sound, and the pairs could not all be single letters. - A nomenclator annealer. The next solver let each pair stand for a letter or a common syllable, one value per pair, with the 8XXX groups held out as unknown words. Among its outputs, runs such as circostanze, intendendosi and indirizzata were whole Italian words of chancery prose that no chance key would give.
- Pinned words, then reading by hand. Those three words were fixed and the annealer rerun; after that the text was read by hand, word by word, one pair at a time, each value checked against every other occurrence of the pair. Lutzovv and Inspruck fell out of the letters. Morichini is spelled out in the last line.
- The code. Once the letters were known, the 8XXX groups could be parsed out and set in order: Imperatore 8319 before istruzione 8340 before Monsignor 8374, and so on to Roma 8620. A one-part code in alphabetical order lets the value of an unknown group be estimated from where it falls between known ones (§05).
04 The reading
Spelling normalised (the cipher writes v for u and commeteva); (…) a code word, read from context; [8xxx] a code group not read; the sentence in italics is clear on the print
Con mio (foglio) del [8734][8760][8904][8739][8413] si le commetteva che in seguito degli (ordin)i dati a Sua Eccellenza il (Signor), [8227] di Lützow, di abbandonare (Roma), Ella si facesse del pari a richiedere i passa(port)i per restituirsi alla Dominante, o per condursi in (Colonia), che (è) (lontan)a della (guerra), (com)e [8704]e lo avesse creduto (opportuno). (Tuttavia) per nuove sopraggiunte circostanze Le (parte)cipo [8093][8102] del (Padre) che Ella rimanga in Inspruck presso l’(Imperatore) e ovunque egli fosse per recarsi; intendendosi sospesa la indicata delibera [8136] relativa alla domanda de’ passa(port)i: interessa [8131] a (Padre) (cotest)a nuova (istruzione), che Le viene indirizzata per tre diverse vie, (col fine di) assicurarne l’arrivo. A risparmio di tempo dovrà con ogni sollecitudine rendere ostensibile il presente dispaccio a (Monsignor) Morichini per di lui norma alle pratiche affidategli.
English
By my (letter) of […] you were instructed that, following the (orders) given to His Excellency the (Signor) […] Lützow to leave (Rome), you should likewise ask for your passports in order to return to the capital, or to go to (Cologne), which (is) (far) from the (war), (as) […] you thought (fit). (However), because of new circumstances that have arisen, I inform you […] of the Holy (Father) that you are to remain at Innsbruck with the (Emperor) and wherever he may go; the said decision […] about asking for the passports being understood as suspended. It matters […] to the Holy (Father) [that] (this) new (instruction), which is being sent to you by three different routes (so as to) make sure it arrives … To save time you must at once make the present dispatch known to (Mgr) Morichini, for his guidance in the negotiations entrusted to him.
Every group outside the brackets is spelled in letters and reads without choice. La Dominante is the capital, Rome. The sentence beginning interessa is grammatically incomplete, with its verb in the open groups [8131] or after them; its sense is plain.
05 The code words, checked by rank
Ten code groups are read from context: foglio, Signor, Colonia, è, lontan-, guerra, com-,
Tuttavia, cotest-, col fine di. Context is not proof, but an alphabetical code gives a test that does not depend on context. A straight
line was fitted to the nine firm anchors, code value against rank in a sorted list of the 1,500 commonest words of a 19th-century Italian corpus (slope about
0.47 code values per word; rankfit2.py). The anchors themselves scatter about the line by 10 to 60 values, so that is the tolerance. Each context
reading then gets a predicted value from its own rank:
| Code | Reading | Predicted | Off by |
|---|---|---|---|
| 8110 | col (fine di) | 8114 | −4 |
| 8116 | Colonia | 8117 | −1 |
| 8120 | com(e) | 8122 | −2 |
| 8122 | cotest(a) | 8145 | −23 |
| 8211 | è | 8199 | +12 |
| 8247 | foglio | 8245 | +2 |
| 8310 | guerra | 8289 | +21 |
| 8346 | lontan(a) | 8339 | +7 |
| 8632 | Signor | 8596 | +36 |
| 8737 | Tuttavia | 8665 | +72 |
Firm anchors against the same line: Imperatore +24, istruzione +21, Monsignor −14, opportuno −10, ordin- −11, Padre −10, parte −18, port- −41, Roma +60.
Four readings land within five values of prediction, five more within the anchors’ own scatter, and one, Tuttavia, beyond it. The two largest residuals, Signor and Tuttavia, both lie beyond Roma, the last firm anchor, and both are positive, as is Roma’s own: the late alphabet is denser in this code than in the word list, and the line extrapolates past it. The readings also come out in the right order among themselves (col < Colonia < come < cotesta < è < foglio < guerra < lontano) and in the right places among the anchors, which context alone would not guarantee.
The order also rules things out. The obvious reading of con mio [8247] del is dispaccio, but a d-word cannot sit above è at 8211; foglio, predicted at 8245, can. Conte for [8227], before di Lützow, would have to fall between come (8120) and cotesta (8122), and the firm anchors alone put it near 8133; 8227 is in the e–f range. Both exclusions lean on the context readings nearest them, so they are as good as those readings.
06 History: a day late
The Emperor Ferdinand had left Vienna for Innsbruck on 17 May 1848. The nuncio followed him there, at the invitation of the Austrian foreign minister, and wrote to Rome on 27 May; the clear letter printed with the cipher is the Pope’s approval of that. Rome and Vienna were near rupture: papal volunteers were fighting the Austrians in the Veneto, and Count Lützow, the Austrian ambassador, had received his passports in the first days of May (the Rome Gazzetta of 9 May announced them) and left Rome on the evening of 16 May, according to the diary of Prince Agostino Chigi. The earlier instruction the cipher refers to, whose date is in the open groups, was the papal answer: the nuncio should likewise ask for his passports and go home, or to Cologne, away from the war.
The cipher countermands it. What the nuove sopraggiunte circostanze were, it does not say. Carlo Luigi Morichini, archbishop of Nisibis and until April the Papal States’ finance minister, had left Rome on 27 May as extraordinary apostolic delegate to the Emperor and to Charles Albert and reached Innsbruck on the night of 10 June (Chigi); the Pope wanted his nuncio to stay beside the Emperor while Morichini negotiated, and wanted Morichini to see the order.
It came too late on both counts. The Dizionario Biografico degli Italiani says that on 14 June the nuncio left Innsbruck and went as papal delegate to Frankfurt and to Cologne, returning to his post at Vienna in September. The dispatch is dated the 15th. A copy was posted at Turin on the 20th and never reached him; Chigi heard that it had been intercepted at Turin or Milan. It was printed in Milan on the 30th and posted up in the streets of Rome on 5 or 6 July. On 8 July Chigi noted that the feared ministerial crisis would not come of it, and that the Pope was said to have had no difficulty in showing the Ministry the part in cipher.
The published guesses fare unevenly against the reading. Spada’s informant said the cipher contained the Pope’s approval of the nuncio’s conduct in keeping on good terms with the court and avoiding the scandal of his dismissal. The approval is in the clear letter; the cipher is an order, and the rupture it heads off was one that Rome itself had ordered. Il Labaro of 7 July, as summarised on Cipherbrain in 2016, guessed at a departure from the court and a role for the bishop of Nisibis, which is nearer to the truth, though in the reverse direction.
07 The eleven open groups
Eleven code groups occur once each and are not fixed by their context. The alphabetical order gives each a window: its place between the known values,
converted to a stretch of the sorted word list (windows2.py, piecewise between all anchors; roughly ±15 words).
| Code | Window | Context |
|---|---|---|
| 8734 8760 8904 8739 8413 | tr–tu / venti–vo(lgente) / beyond v / tu–u / n–o | the date of the earlier letter: con mio foglio del …, probably an early-June date such as tre volgente with a reference |
| 8227 | ess–età–ex–fa | il Signor, […] di Lützow; Chigi calls him ex-ambasciatore |
| 8704 | te–ti | come […]e lo avesse creduto opportuno |
| 8093 8102 | ch–ci / ci–co | Le partecipo […] […] del Padre |
| 8131 8136 | cr–da / da–dar | interessa […] al Padre; delibera […] relativa |
Scoring every candidate in these windows with the character model picks only function words (ciò, da, esse), which is no reading. 8904 lies above every word in the list, which in a code of this kind may be z-words or an appendix of numbers or names. Filling these needs the 1848 papal codebook or other messages in the same code: the Secretariat of State and the Vienna nunciature archive in the Vatican, or Austrian intercepts in the Haus-, Hof- und Staatsarchiv, which Ramliden pointed to in 2015.
08 What remains uncertain
- The eleven groups above, and so the date of the earlier letter and the exact wording of three clauses.
- The ten context readings are checked by order, not proved. The weakest are guerra (8310, only nine values below Imperatore at 8319, so nearly all h- and i-words would have to fit between them) and lontan- (8346, six above istruzione, leaving five values for everything from istr- to lon-). Both fit the sentence and the order, but a code this sparse there would be unusual. Tuttavia is furthest from its prediction, for the reason given in §05.
- della guerra where dalla guerra is expected, and the stray 8 after si on line 1, are as printed; whether they are the cipher clerk’s or the Milan compositor’s cannot be told from a reprint.
- The broadsheet is a Roman reprint of the Milan paper. The Milan issue itself (on repubblicaromana-1849.it) was not collated digit by digit.
09 Sources
- Dispaccio del Card. Soglia. Tratto dal giornale l’Italia del Popolo 30 Giugno, broadsheet, Rome, Tip. Clemente Puccinelli, 1848; image from K. Schmeh, “Wer knackt die verschlüsselte Nachricht von Kardinal Soglia?”, Cipherbrain, 13 December 2014 (scienceblogs.de), supplied by Tony Gaffney. The fourteen comments: Joe’s transcription (no. 4), Kent Ramliden on the 1814 Vienna nunciature cipher and on Spada (nos. 7, 8, 10), Thomas and Armin on Il Labaro (nos. 12–14). No reading of the cipher had been posted there or, as far as a search in September 2026 found, anywhere else.
- L’Italia del Popolo, Milan, year I no. 40, 30 June 1848 (repubblicaromana-1849.it).
- G. Spada, Storia della rivoluzione di Roma, vol. II (Florence, 1868–69), ch. XIV, pp. 387–390: the clear letter and the paraphrase of the cipher (Wikisource).
- Diario del principe Agostino Chigi Albani, 1848: 6 and 9 May, 17 May, 27 May, 20 June, 6 and 8 July (Wikisource).
- L. Sandoni, “Viale Prelà, Michele”, Dizionario Biografico degli Italiani 99 (2020) (Treccani).
The corrected ciphertext (ct2.txt), the decoder with the table and the code (decode.py, key.json, codes.json),
the synthetic control (synth.py), the rank fit and the windows (rankfit2.py, windows2.py), the line strips checked against
the transcription (strips/) and the notes are in the repository (soglia1848/). Run python decode.py --guess for the reading
with the context code words filled in.