Article 2 · Write-up technique
Casser le Wenmi : de la structure des lettres à deux clés sans paramètre
Comment on passe de « fazihipego wezelucuna » à « 報傳取消日人態度遽變 » : la transcription, trente séances de calcul dont la plupart négatives, un test statistique simple qui change tout, et deux clés qui tiennent chacune en une ligne.
Les passages soulignés en pointillé sont des hypothèses non confirmées.
Des mots en lettres latines, mais pas le même chiffre
Le code télégraphique public est une étape de codage, pas un secret. Le Wenmi de 1916 relève de la conversion en syllabes, avec deux grilles particulières.
Rosamonde · 1915–1916
AnglaisSubstitution réciproque des lettresyou ↔ heaUne lettre remplace une lettre ; la même table sert dans les deux sens.
Code télégraphique chinois
Caractère chinoisRépertoire public à quatre chiffres文 → 2429Ce répertoire est public : il ne suffit pas, à lui seul, à cacher le texte.
Condensateurs · plusieurs tables
Code chinois à quatre chiffresDeux paires de chiffres → syllabes00–99 → CVLa table dépend du système employé. CV désigne une consonne et une voyelle.
Wenmi 1916 · G0 / Y0
Code chinois à quatre chiffresDeux grilles de syllabes distinctes報 → 1032 → fa | ziExemple G0 uniquement. Y0 emploie une autre grille : les tables ne sont pas interchangeables.
En bref : le système
Les deux canaux de 1916 se chiffrent en cinq opérations, sans aucune clé secrète au sens moderne. Exemple sur le canal Tokyo → Zhaoqing (juin–septembre 1916) :
La grille G0 attribue à chaque nombre de 00 à 99 une syllabe consonne + voyelle. Les consonnes sont prises dans l'ordre alphabétique inversé en partant de h (h g f d c b z y x w v t s r q p n m l k), deux par dizaine ; les voyelles a e i o u codent l'unité, en montant pour la première consonne de la dizaine et en descendant pour la seconde (un parcours « en serpentin ») :
Ainsi ha = 00, hu = 04, gu = 05, ga = 09, fa = 10… ka = 99. En Python :
ORDER, V = "hgfdcbzyxwvtsrqpnmlk", "aeiou"
G0 = {c + v: 10 * (i // 2) + (j if i % 2 == 0 else 9 - j)
for i, c in enumerate(ORDER) for j, v in enumerate(V)}
def decode(letters): # "fazihipego..." -> ["1032", "0278", ...]
s = [letters[k:k+2] for k in range(0, len(letters), 2)]
return ["%02d%02d" % (G0[a], G0[b]) for a, b in zip(s[::2], s[1::2])]
Chaque message se termine par la signature 伸 (heyu = 0135), parfois 伸令, puis le jour du mois, écrit soit en rime 韻目代日 (巧 18, 漾 23, 元 13…), soit en chiffre chinois (卅 30).
Essayez
Choisissez un télégramme, puis cliquez sur un caractère ou lancez la lecture pas à pas : les deux syllabes s'allument dans le texte chiffré et dans la grille de la clé, affichée sous le message. Les deux canaux sont disponibles (G0, puis Y0). Les caractères en pointillé orange sont douteux (lecture du formulaire incertaine ou caractère rare).
Chaque case : syllabes · code télégraphique · caractère.
Point de départ : les travaux publiés
Point de départ : l'article « Sun Yat-sen's circle on the wire, 1916–17 »[1] et le dépôt dbourdeau/cyphersolver[2], qui publient les transcriptions des formulaires et le déchiffrement d'une soixantaine de télégrammes du cercle de Sun Yat-sen. Ces télégrammes emploient des tables de « condensateur » de la lignée de celles de Yamada Junzaburō, publiées par S. Tomokiyo sur Cryptiana[8] : 20 consonnes et 5 voyelles, soit 100 syllabes, une par nombre de 00 à 99.
Les télégrammes chiffrés de Zhao Shen s'en distinguent : mots de dix lettres, aucun additif apparent ; ils y figuraient parmi les problèmes ouverts[1]. Ceux du canal du Conseil des affaires militaires commencent en général par le préfixe en clair 2429 1378, qui se lit 文密 : c'est le nom de ce chiffre. Ses télégrammes au Yunnan, de même construction mais à six voyelles, commencent par l'indicateur « Cg ». Nous sommes partis des pièces identifiées et des transcriptions, et de l'idée qu'un demi-code télégraphique devient une syllabe. La suite montre que, pour le canal du Conseil, la table suit une règle simple : alphabet inversé, deux consonnes par dizaine, voyelles en serpentin.
Les règles du jeu
Un déchiffrement historique est un terrain idéal pour se tromper soi-même : avec assez de paramètres, on « lit » du chinois dans n'importe quel bruit. Nous avons donc travaillé sous des règles fixées à l'avance et consignées dans un journal tenu en ajout seul (près de 1 400 lignes, 31 séances) :
- Sources immuables. PDF JACAR conservés tels quels, empreintes SHA-256 consignées ; toute lecture nouvelle est un nouveau fichier versionné.
- Un message témoin. Le télégramme 0406 (12 juillet 1916) n'a jamais servi à régler une clé ou à corriger une lecture. Il n'est utilisé que pour juger.
- Aucun « crib ». On n'a jamais imposé un mot supposé (nom, formule) dans le texte clair. Seules les dates, lues en clair sur les formulaires par l'employé japonais, ont servi d'ancres, et plusieurs jeux d'ancres ont été testés.
- Témoins positifs et nuls. Chaque recherche est lancée aussi sur un texte chinois connu, chiffré avec une clé connue de même forme (le solveur doit la retrouver), et sur des données mélangées (le solveur ne doit rien trouver). Un score sur les archives n'a de sens que comparé à ces deux repères.
- Plusieurs graines. Un optimum n'est retenu que s'il est retrouvé à l'identique depuis des départs aléatoires différents.
- Statuts explicites. Chaque résultat est classé : fait, hypothèse, essai négatif, candidate, corroboré.
Étape 1 — Lire ce que l'employé a écrit
Du formulaire au sens : un exemple réel
Rosamonde, Shanghai → Tokyo, 7 juillet 1915. Cet exemple emploie la substitution anglaise, pas la grille G0 du Wenmi.
Le chiffré n'existe que sous la forme de copies manuscrites par des employés japonais. Les lettres g et q, x et d, u et n s'y confondent facilement ; une seule lettre fausse change un caractère, une lettre sautée décale tout le reste du message.
- Rendu des pages à 300 dpi, rotation, découpe de chaque formulaire et de chaque groupe (outil
sipsde macOS, sans retouche d'image). - Lecture aveugle : un premier lecteur (assistant IA) fixe sa lecture avec variantes et niveau de confiance avant de voir toute transcription antérieure.
- Lecture humaine indépendante : j'ai lu moi-même les groupes à travers une petite interface locale qui présente des extraits anonymes et mélangés (on ne sait ni de quel message ni de quelle position il s'agit), avec export JSON. Une quinzaine de lots, plusieurs centaines d'extraits ; certains ciblent une lettre, avec des exemples sûrs du même copiste pour comparer.
- Consensus par majorité entre lecteurs, désaccords arbitrés à l'image. Le corpus de travail passe de la version v1 (211 codes, 71 unités masquées) à la v8.
Un détail de lecture s'est révélé décisif : longtemps, q a été considéré comme une variante graphique de g. La lecture humaine les a séparés, ce qui donne un alphabet d'exactement 20 consonnes (b c d f g h k l m n p q r s t v w x y z, sans j). Sur le meilleur modèle de l'époque, cette seule distinction a fait monter le score de 681 à 829.
Biais déclaré
Deux de mes lots de lecture (« lectures assistées », puis relecture de 16 codes douteux) n'étaient pas aveugles : je savais ce que le modèle proposait. Pour limiter le risque, les quatre dernières unités de chaque message (signature et date) ne pouvaient pas être modifiées ainsi, le message témoin 0406 n'a jamais été retouché, et chaque proposition devait être confirmée à l'image (18 acceptées, 27 rejetées).
Étape 2 — Ce qui n'a pas marché (et pourquoi)
Pendant trente séances, nous avons suivi l'approche classique d'une substitution inconnue :
- un modèle de langue (unigrammes et bigrammes de codes télégraphiques) appris sur environ 430 000 caractères de textes de Sun Yat-sen tirés de Wikisource, convertis en codes, puis complété de télégrammes de 1916 publiés ;
- une table inconnue syllabe → nombre (100 cases, choisie librement), cherchée par recuit simulé : moteur C++ multi-thread, 64 départs × 30 millions d'itérations, puis recherche locale itérée ; environ 12 minutes par passe sur 8 cœurs ;
- des ancres : la rime du jour en fin de message, déduite de la date écrite sur le formulaire.
Toutes ces recherches ont échoué, et les témoins disent pourquoi. Le solveur retrouvait les clés des textes positifs (par exemple 258 codes sur 267) : il était capable. Mais sur les archives, son meilleur score (≈ 900) restait loin de celui d'un vrai texte (1 200–1 350), tout en dépassant nettement les données mélangées (≈ 670). Un texte chiffré par un livre de code arbitraire donnait 810–940 : les archives ressemblaient à cela.
Deux erreurs se cachaient dans les hypothèses :
- De fausses ancres. Pour les jours 16 à 30, la convention des rimes emploie une autre série tonale que celle supposée au départ (vérifié dans des originaux de Sun publiés[11]). Plusieurs ancres étaient donc fausses.
- Un espace de clés trop grand. Une table libre de 100 cases offre assez de liberté pour fabriquer des optima de bruit autour de 900. L'essai inverse le confirme : en relâchant la structure finalement trouvée (expérience E21), l'ajustement monte, mais le message témoin devient illisible. C'est un surajustement.
Entre-temps, une piste documentaire a été suivie jusqu'au bout. Les rapports du consulat japonais de Hankou (9 et 11 mai 1916)[5][6] décrivent des surchiffrements « +111 » puis « inversion des quatre chiffres + 111 ». Les télégrammes d'avril joints aux rapports ont bien été décodés ainsi (retenue arithmétique, rime du jour en fin). Mais toutes les variantes ±111, avec ou sans inversion et avec le décalage résiduel que cela induit sous une table syllabique, sont négatives sur le flux de Tokyo (expériences E13, E15, E16). La conclusion a été tirée : aucune clé additive en juillet.
Étape 3 — Un test sans clé : la consonne code la dizaine
Le tournant est venu d'un test qui ne cherche aucune clé. Les codes télégraphiques ont une forme très particulière : le chiffre des milliers est concentré (les codes courants sont surtout entre 0000 et 7999, presque jamais 8xxx ou 9xxx), alors que les chiffres des unités sont à peu près uniformes. Si une moitié de code (deux chiffres) devient une syllabe, la question est : qu'est-ce qui, dans la syllabe, porte la dizaine ?
On compte donc les lettres selon leur rang dans le message (expérience S3). Aux rangs qui portent la première moitié du code (milliers et centaines), la distribution des consonnes est extrêmement déséquilibrée (z ≈ 22) : h et g dominent, l, p et m n'y apparaissent jamais. Les voyelles, elles, sont homogènes (z ≈ 1). Une simulation (S4) montre qu'une table aléatoire ne produit jamais ce motif (0 cas sur 400), alors qu'une table de coordonnées, où la consonne indique la dizaine et la voyelle l'unité, le reproduit.
Cette hypothèse (H9) divise l'espace de recherche de façon spectaculaire : il ne s'agit plus de placer 100 syllabes librement, mais d'affecter chaque consonne à une dizaine et chaque voyelle à un chiffre. Elle montrait aussi que certains jeux d'ancres de date étaient impossibles : sous H9, certaines rimes supposées exigeraient la même consonne pour deux dizaines.
Étape 4 — Un solveur contraint et un message témoin
Un nouveau solveur (anchor_coord) ne cherche que des tables de coordonnées. Sans ancre, il échoue même sur les témoins positifs ; avec dix ancres vraies, il retrouve toute la clé. On énumère alors les jeux d'ancres compatibles avec H9 (97 sur 324), et l'on teste les plus plausibles. Un seul se détache : D = {23 juin 漾, 18 juillet 巧, 19 juillet 皓, 13 septembre 元}.
| Mesure (jeu d'ancres D) | Archives | Mélangé (nul) | Témoin positif |
|---|---|---|---|
| Score, corpus v4 | 705 | 349 | 1 203 |
| Score, corpus v5 (q ≠ g) | 829 | 332 | 1 216 |
| Reproductibilité (3 graines) | même optimum à 0,001 près, 96/96 unités concordantes | ||
Le juge est le message 0406, tenu à l'écart. On mesure le gain moyen de log-vraisemblance par caractère sous le modèle de langue, par rapport à un caractère moyen : positif si le décodage ressemble à du chinois, négatif sinon. La table D le décode à +1,9 par caractère sur le corpus v4, puis +3,47 sur le corpus v5, alors que toutes les autres tables candidates restent à 0 ou en dessous et que les tables nulles donnent −1 à −2,5. En validation croisée (S7 : régler sur cinq messages, juger sur le sixième), la table se transporte sur 6 messages sur 6. Le texte devient lisible par phrases : 三十式槍、萬一千、軍用品已到門司、年息一割、無擔保、第二批械、軍務院、豫定計畫…
Étape 5 — La grille G0
En regardant la table ajustée, case par case, une régularité saute aux yeux : les consonnes se suivent dans l'ordre alphabétique inversé, deux par dizaine, et les voyelles montent puis descendent. Les quelques cases qui s'en écartent sont celles que les données contraignaient mal. On remplace donc la table ajustée par la grille régulière qu'elle approxime : G0, qui n'a plus aucun paramètre libre.
Le résultat est le test le plus fort de l'enquête : sans aucun réglage, G0 décode le message témoin 0406 à +3,99 par caractère, mieux que la table ajustée dont elle est issue (+3,48). Une table bruitée par l'ajustement fait moins bien que la règle simple qu'elle cachait : c'est ce qu'on attend si la règle est la vraie clé. G0 redonne les 351 codes des sept messages, et les fins de message deviennent cohérentes : signature 伸 puis jour (漾 pour le 23 juin, 巧 pour le 18 juillet, 元 pour le 13 septembre, 卅 pour le 30 septembre, 文 pour le 12 juillet).
Deux fins semblaient anormales. Le 19 juillet se termine par 4210 au lieu de 皓 (4110) : c'est une lettre fautive, expliquée par le second canal (étape 6). Le message daté du 30 juin se termine par 卄 (20) ; la lecture a été revérifiée à l'image, et l'écart reste une erreur d'encodage, ou une rédaction le 20 pour un dépôt le 30.
Pourquoi y croire : les contrôles
| Critère fixé à l'avance | Résultat |
|---|---|
| Témoins positifs de même forme récupérés | Oui (1 203–1 216 ; clés retrouvées) |
| Archives nettement au-dessus des nuls | Oui (829 contre ≈ 335 ; 1 144 après relecture) |
| Optimum reproductible depuis des départs différents | Oui (3 graines, même optimum) |
| Message tenu à l'écart lisible sans réglage (≥ +2,5 / caractère) | Oui : +3,99 sous G0 |
| Texte chinois suivi, cohérent avec les dates du formulaire | Oui pour l'essentiel ; 12 caractères douteux sur 351 (plus 6 rares mais confirmés) |
| Recoupement extérieur indépendant | Oui : l'expéditeur 伸 = 趙伸, identifié après le décodage dans une étude de 2026[7] qui décrit les mêmes contrats d'armes, puis confirmé par les formulaires (nom et adresse de Zhao Shen) |
| Second canal : message tenu à l'écart lisible sous une clé fermée | Oui : 0496a à +4,62 sous Y0, annonce de la mort de Cai E à Fukuoka le 8 |
| Second canal : fins datées hors ancres conformes au formulaire | Oui : 4 sur 4 |
Ce dernier point mérite d'être souligné : le nom de Zhao Shen, la livraison du « second lot d'armes », la garantie refusée par le Guangdong et le partage des armes entre Yunnan et Guangdong apparaissent dans les télégrammes décodés avant qu'on ait lu l'article de Cheng Honglei. Aucun de ces mots n'a été injecté dans la recherche.
Limites : G0 a été lue dans une table ajustée et Y0 déduite de cinq ancres, elles ne sont pas tombées du ciel ; les derniers lots de lecture n'étaient pas aveugles ; et les traductions sont des traductions de travail.
Étape 6 — Le second canal et la grille Y0
Un autre groupe de formulaires, sans le nom 文密, vient du même expéditeur : 15 formulaires de juillet à novembre 1916 entre Tokyo et le Yunnan, signés de Zhao Shen ou adressés à lui, qui commencent en général par l'indicateur en clair « Cg ». Leur alphabet diffère : y y est une voyelle, et G0 n'y donne rien. Le test des rangs montre la même structure de coordonnées (consonnes z ≈ 22, voyelles z ≈ 5), mais quatre séries de recherches par recuit (E26 à E29), même avec des lectures humaines et des ancres de date, restent négatives : le solveur retrouve parfaitement ses témoins positifs, mais le message tenu à l'écart (0496a) plafonne à +0,9 par caractère, loin du seuil de +2,5.
Le déblocage est venu de la lecture humaine des en-têtes et des fins de message :
- un télégramme du 5 novembre (0489b) est envoyé en clair : 十號起程月末抵滇 伸 歌, « départ le 10, arrivée au Yunnan à la fin du mois ; Shen ; le 5 ». Le télégramme chiffré du même jour finit par
buky hary:buky= 伸 (0135),hary= 歌 (2960, rime du 5) ; - celui du 11 novembre finit par
foha= 尤 (1429, rime du 11).
Ces cinq valeurs (bu = 01, ky = 35, ha = 29, ry = 60, fo = 14) s'ajustent exactement à un syllabaire linéaire : 17 consonnes dans l'ordre alphabétique sans c, j ni q, six voyelles parcourues en serpentin, et valeur = 6 × rang de la consonne + rang de la voyelle. Un seul choix restait libre, l'ordre de e et i ; il a été fixé par symétrie avant tout décodage (sur les lectures automatiques, la variante inverse donne +2,76 par caractère, contre +4,23).
CONS = "bdfghklmnprstvwxz" # 17 consonnes, sans c, j, q
Y0 = {c + v: 6 * i + r for i, c in enumerate(CONS)
for r, v in enumerate("yuoiea" if i % 2 == 0 else "aeiouy")}
# 102 syllabes : ze = 100 et za = 101 ne servent pas
Résultats sous Y0, sans aucun réglage :
- tout le corpus de 1916 : +4,5 par caractère sur les lectures humaines (454 codes ; +4,23 sur les premières lectures automatiques ; pour comparaison, G0 sur son message témoin : +3,99) ;
- le message 0496a, tenu à l'écart de toutes les recherches précédentes et jamais utilisé pour établir Y0 : +4,62 par caractère, et il annonce la mort du général Cai E à Fukuoka le 8 [novembre 1916] : un fait historique exact que rien dans la méthode ne pouvait suggérer ;
- des fins de message qui n'ont pas servi d'ancres tombent sur la date écrite sur le formulaire : 篠 (17 juillet), 皓 (19 juillet), 齊 (8 septembre), 元 (13 septembre).
Deux précisions sur les règles. Les ancres de Y0 viennent d'un télégramme en clair du même jour, donc d'un document, pas d'une supposition. En revanche, un « mot probable » (電, « télégramme ») a été essayé : c'était un écart déclaré à la règle « aucun crib », il n'a rien apporté et a été rejeté (E29). Enfin, le texte de ce canal a été entièrement relu à l'aveugle par un humain, et le nombre de mots concorde partout avec celui noté sur le formulaire ; il reste pourtant moins sûr que celui du premier : beaucoup de caractères rares y restent marqués.
Ce canal a aussi permis de corriger le premier : le télégramme de Zhaoqing du 19 juillet finissait par un code impossible, alors que son jumeau du Yunnan, envoyé le même jour, finit bien par 伸皓 (le 19). Relue à l'image, la lettre fautive est un i à la place d'un e : en Morse, e s'écrit · et i ··.
Le problème ouvert : les messages de 1917
Les deux télégrammes chiffrés de juin 1917, 0509 et 0511 (Sun Yat-sen ↔ Dai Jitao), résistent. Ils ne portent ni le préfixe 文密 ni l'indicateur « Cg », et leur alphabet est encore différent (c et j présents, y à la fois consonne et voyelle, quelques groupes atypiques). Ni G0 ni Y0 ne les lisent, et aucune des familles de tables testées ensuite (grilles du même type, tableaux 17 ou 18 × 6 en ordre libre, coordonnées avec ancres, mots probables) ne fait ressortir quoi que ce soit au-delà du hasard. La lecture humaine à l'aveugle, les confusions possibles et toutes les pistes sont détaillées dans la page Télégrammes.
Les tables retrouvées et leurs dates de découverte
Récapitulatif des tables trouvées au cours de l'enquête (octobre 2026), dans l'ordre chronologique des télégrammes qu'elles lisent. Pour les condensateurs, la construction se lit ainsi : ordre des consonnes / ordre des voyelles / remplissage par voyelle (V : valeur = 20 × rang de la voyelle + rang de la consonne) ou par consonne (C : valeur = 5 × rang de la consonne + rang de la voyelle) / premier nombre. Les tables publiées par D. Bourdeau[1] n'y figurent pas.
| Table | Télégrammes | Construction | Trouvée le | Où la lire |
|---|---|---|---|---|
| Hong Kong | Hong Kong, mars 1914 | y k u l o c a p i t → 0 1 2 3 4 5 6 7 8 9 | 15 octobre 2026 | Définition |
| « Laisaosang » | juin 1914–février 1915 | c…b / o a e u i / V / 01 | 15 octobre 2026 | 1915 |
| « New York » | juillet 1914–février 1915 | b…z / a e i o u / C / 00 | 15 octobre 2026 | 1915 |
| « Hsuweilin » | San Francisco → « Hsuweilin », juillet 1914 | b…z sans k / a e i o u / C / 01 | 15 octobre 2026 | 27/7/1914 |
| candidate · « Kai » | Changchun et Shanghai, août–septembre 1914 | g…f / e o a u i / V / 01 | 15 octobre 2026 | 1914 (non publiés) |
| Rosamonde | anglais, Tokyo ↔ Shanghai, 1915–1916 | a↔u b↔g c↔s e↔o f↔j h↔y i↔r k↔z l↔t m↔w n↔v q↔x (substitution réciproque) | 15 octobre 2026 | Rosamonde |
| « Thirtieth » | Shanghai ↔ Tokyo, février–mai 1915 | v…t / u i e o a / V / 01 | 15 octobre 2026 | 1915 |
| « Thirteenth » | Tokyo → Shanghai, février–mars 1916 | n…m / o a e i u / V / 01 | 15 octobre 2026 | 1915 |
| Sixteenth | Shanghai ↔ Tokyo, avril 1916 | t…s / e u o i a / V / 01 | 15 octobre 2026 | Définition |
| Seventeenth | Shanghai ↔ Tokyo, avril 1916 | p…n / i u a e o / V / 01 | 15 octobre 2026 | Définition |
| « Thirtyeight » | Tokyo → Shanghai, mai 1916 | k…j / e a i u o / V / 01 | 13 octobre 2026 | mai 1916 |
| Huang Xing | Tokyo ↔ Shanghai (« Ylchang »), fin mai – juin 1916 | d c b t h j f q g k n m p s r l x w z v / u i o e a / C / 01 | 15 octobre 2026 | Huang Xing |
| G0 (« 文密 ») | Tokyo → Conseil des affaires militaires, juin–septembre 1916 | h g f d c b z y x w v t s r q p n m l k / a→u, u→a | 9 octobre 2026 | Étape 5 |
| Y0 (« Cg ») | Tokyo ↔ Yunnan, juillet–novembre 1916 | 17 × 6 (y) / serpentin | 11 octobre 2026 | Étape 6 |
Le tableau distingue les tables établies de la candidate « Kai », qui ne compte pas comme déchiffrement publié. Les périodes indiquent les attestations du corpus, y compris le lot Inédits.
S'y ajoutent deux tables de D. Bourdeau confirmées ou précisées : sa seconde table « Manille », publiée à titre provisoire, lit sans correction un télégramme du 6 janvier 1915 (15 octobre 2026) ; sa table « Honolulu » lit les télégrammes « Aloha » d'avril–mai 1916 si w vaut v (13 octobre 2026).
1914 : Hsuweilin et la candidate « Kai »
Le dossier de juillet 1914 – janvier 1915 de la même série (JACAR B03050087500) contient une dizaine de télégrammes à condensateur, souvent précédés d'un mot en clair qui sert d'indicateur (« Ting », « Kai », « Sixth », « Chung »). Les mêmes tests que pour 1915 (famille complète des tables de condensateur, clés déjà connues, six témoins mélangés) donnent, le 15 octobre 2026 :
- deux tables de D. Bourdeau[1] en service dès 1914 : « Sixth » se lit avec sa table « San Francisco » (Lin Sen, San Francisco, 18 septembre 1914 : demande d'un virement de 200 dollars ; 4,41 par code contre 0,44 au mieux pour les témoins), et « Ting » (Changchun, 31 juillet 1914) avec sa table « Shanghai » (3,66 contre 1,84) ;
- « Hsuweilin », table nouvelle (San Francisco → « Hsuweilin », 27 juillet 1914) : consonnes
b c d f g h j l m n p q r s t v w x y z(sansk), voyellesa e i o u, remplissage par consonne, départ à 01 ; 3,61 contre 0,98 : « hier, installé sur la côte du Pacifique… ; l'adresse pour les lettres reste la même » ; - « Kai », table candidate (Changchun, 9 août 1914 ; Shanghai, 23 septembre 1914) : consonnes à partir de
g, voyellese o a u i, remplissage par voyelle, départ à 01 ; 3,01 contre 1,61 et 1,73 contre −0,46. La lecture n'est encore que partielle (copies très fautives).
Les messages marqués « Chung » restent illisibles. Candidate non corroborée : le meilleur écart pour « Kai » est de 3,01 − 1,61 = 1,40, sous le seuil de publication de 1,5. Les deux textes restent hors corpus ; aucune identité n’est attribuée à l’indicatif.
Tables supplémentaires : une recette complète pour chaque lecture
Le lot Inédits 1913–1916 ajoute des tables précises à deux procédés distincts. Un condensateur convertit une syllabe consonne–voyelle en deux chiffres ; le système Hong Kong remplace chaque lettre par un seul chiffre. Dans les deux cas, quatre chiffres donnent un caractère du code télégraphique public. Un message déjà numérique se lit directement dans ce répertoire : il ne prouve pas à lui seul l’existence d’un chiffre secret.
Sixteenth et Seventeenth : remplissage par voyelle
La liste de base est b c d f g h j k l m n p q r s t v x y z. On la fait tourner de 15 places vers la gauche pour Sixteenth, de 11 pour Seventeenth. Les rangs commencent à zéro : i est celui de la consonne dans la liste tournée et j celui de la voyelle dans l’ordre de la table. La valeur d’une syllabe est (20 × j + i + 1) modulo 100, écrite sur deux chiffres. Deux syllabes sont concaténées, sans addition. Ainsi, sous Sixteenth, xe·qu → 03·38 → 0338 → 兄, premier caractère du 19 avril 1916.
| Table | Consonnes dans l’ordre de la table | Voyelles | Formule |
|---|---|---|---|
Sixteenth | t v x y z b c d f g h j k l m n p q r s | e u o i a | (20 × j + i + 1) modulo 100 |
Seventeenth | p q r s t v x y z b c d f g h j k l m n | i u a e o | (20 × j + i + 1) modulo 100 |
Hsuweilin : remplissage par consonne
Consonnes b c d f g h j l m n p q r s t v w x y z (sans k), voyelles a e i o u. La formule devient (5 × i + j + 1) modulo 100. Par exemple gu·ca → 25·06 → 2506 → 昨, au début du 27 juillet 1914. L’alphabet diffère de celui de Sixteenth : il faut conserver chaque liste exactement.
Hong Kong : une lettre, un chiffre
La substitution est y k u l o c a p i t → 0 1 2 3 4 5 6 7 8 9. On rejoint les groupes de transmission, puis on découpe en blocs de quatre lettres. Exemple : kcpk → 1571 → 已 dans le 13 mars 1914. Le premier mot télégraphique n’est donc pas une syllabe de condensateur. Les défauts de longueur restent des problèmes de copie ; un recalage proposé ne devient pas une lettre lue.
Des contrôles séparés de la restitution
La sélection exige un score par code ≥ 1,5 et un écart strictement supérieur à 1,5 au témoin mélangé, une table établie, un texte intelligible et la relecture appliquée. La lisibilité est un contrôle indépendant du score : le 23 septembre 1914 « Kai » reste exclu comme brouillon, et celui du 9 août échoue à l’écart demandé (3,013 − 1,613 = 1,400). Les deux messages ne sont pas publiés. Les scores initiaux et les recalages restent distincts dans le manifest ; les points douteux et les lettres ajoutées restent visibles.
Les neuf ajouts de 1915 n’introduisent pas de nouveau solveur. Thirtieth se lit désormais de février à mai 1915 ; Shanghai est attestée en juin 1915 et San Francisco en octobre 1915, avec les tables publiées [1]. La relecture R23 préremplie a été suivie de R24 sur les caractères marqués ; les refus ou indécisions n’ont pas été transformés en confirmations. La série compte vingt télégrammes, 446 codes, 53 caractères douteux et 1 illisible. Les deux ajouts Rosamonde des 6 et 7 mars emploient le procédé déjà décrit : les qq relus restent au chiffre, et [pp] dans la lecture anglaise signale l’usage de q pour p attesté en 1915, sans effacer cette particularité.
Trois tables de plus : 1915
Les volumes de 1915 de la même série (JACAR B03050087600 et B03050087700)[17] n'avaient jamais été ouverts. Ils contiennent des télégrammes à condensateur antérieurs d'un an à ceux de 1916. Pour chacun, nous avons fait tourner la famille complète des tables de condensateur (604 800 tables : vingt consonnes dans l'ordre alphabétique ou inverse, point de départ, ordre des cinq voyelles, remplissage par consonne, par voyelle ou en serpentin, départ à 00 ou 01) et comparé le meilleur score à ceux de six témoins, les mêmes syllabes mélangées. Trois tables ressortent nettement, chacune lisible sur plusieurs télégrammes :
- « Laisaosang » (Tokyo ↔ Shanghai, janvier–février 1915) : consonnes dans l'ordre alphabétique à partir de
c(sansw), voyelleso a e u i, remplissage par voyelle, départ à 01. 2,90 par code contre 0,23 au mieux pour les témoins ; la même table lit dans l'autre sens un télégramme de Shanghai (2,77 contre 0,96). - « New York » (New York → Sun Yat-sen, février 1915) : la table la plus simple de la famille — consonnes de
bàzdans l'ordre alphabétique (petqconfondus), voyellesa e i o u, remplissage par consonne, ba = 00. Trouvée indépendamment sur deux télégrammes ; 3,90 et 4,74 par code. - « Thirtieth » (Shanghai ↔ Tokyo, février–mai 1915), annoncée en clair par ce mot : consonnes à partir de
v, voyellesu i e o a, remplissage par voyelle, départ à 01. 6,24 par code contre 1,73, sans aucune correction, sur le télégramme du 27 février. Comme « Thirtyseventh » et « Thirtyeight » en 1916, l'ordinal désigne sans doute une table dans une liste.
Enfin, le 6 janvier 1915, un télégramme de Tokyo à « Konglipo » (Manille) se lit sans correction avec la table que Daniel Bourdeau avait proposée, à titre provisoire, d'après un seul télégramme de mai 1916[1] : 無其事。文覆 (« Il n'en est rien. — Wen, en réponse »). Cette table était donc en service seize mois plus tôt.
Les lettres ont été lues sur les scans par Claude, puis j'ai relu à l'aveugle les points douteux (lot de 77 questions, dont 10 syllabes témoins, toutes confirmées ; j'ai retrouvé 15 des 22 corrections proposées sans savoir lesquelles étaient attendues). Les télégrammes sont sur la page Télégrammes.
Une quatrième table nouvelle sert en mars 1916 entre Tokyo et Shanghai : « Thirteenth », annoncée en clair par ce mot sur un télégramme du 28 février 1916 : consonnes à partir de n, voyelles o a e i u, remplissage par voyelle, départ à 01. Elle lit les télégrammes du 12 et du 16 mars 1916 (4,83 et 4,52 par code) et celui du 28 février lui-même (4,40), où un mot anglais est laissé en clair au milieu du chiffre : 正金銀行 bearer 票, des billets au porteur de la Yokohama Specie Bank ; voir février–mars 1916.
Rosamonde : de l'anglais sous une substitution réciproque
Dans les mêmes volumes, et en mai 1916 dans le dossier B03050089000[16], d'autres télégrammes ne ressemblent pas à des condensateurs : des mots de dix lettres sans alternance consonne–voyelle, avec des groupes de consonnes et des voyelles doublées. Le test sans clé est négatif (ce n'est pas une table de syllabes), mais trois statistiques orientent : l'indice de coïncidence des lettres vaut 0,062, celui d'une langue naturelle (0,038 pour des lettres au hasard) ; f et q n'apparaissent jamais ; des trigrammes reviennent d'un télégramme à l'autre (hea, dix fois). C'est la signature d'une substitution simple sur un texte en langue naturelle.
Un recuit simulé sur toutes les substitutions de 26 lettres, noté par un modèle de quadrigrammes anglais, fait apparaître de l'anglais dès le premier essai (your letter, received my life, cable). La table trouvée est presque une involution (chaque lettre échangée avec une autre) ; en restreignant la recherche aux substitutions réciproques, la clé se fixe : a↔u b↔g c↔s e↔o f↔j h↔y i↔r k↔z l↔t m↔w n↔v q↔x, d et p inchangés. hea = you, teno = love. La table ci-dessus décrit la substitution de base. Les formulaires de 1915 attestent aussi q à la place du chiffre attendu pour p, notamment les qq relus du 6 mars ; le texte les note [pp]. Cette particularité de l’usage ne modifie pas silencieusement la table réciproque.
Trois contrôles. (1) Un texte anglais de même longueur, chiffré par une table tirée au hasard, est retrouvé à 100 % par la même recherche. (2) Hors échantillon : la clé tirée des seuls télégrammes de 1915 lit les sept télégrammes de mai 1916, que j'avais transcrits à l'aveugle avant la découverte (z = 7,5 contre 2 000 tables réciproques tirées au hasard). (3) Ma relecture aveugle des télégrammes de 1915 (50 lignes, sans voir ni la lecture de Claude ni le clair) se lit tout aussi bien (z = 10,9). Un télégramme d'un autre système reste illisible (z = 0,6). Le contenu — une correspondance amoureuse entre Sun Yat-sen et Soong Ching-ling — est présenté sur la page Les télégrammes de Rosamonde.
Pourquoi tant de lettres corrigées en mai 1916 ?
Dans l'édition, les lettres entre crochets sont celles que le formulaire porte autrement, ou omet. Elles sont trois fois plus nombreuses en mai 1916 (109 sur 611, 17,8 %) qu'en 1915 (59 sur 1 061, 5,6 %) ; le télégramme du 12 mai, sur deux feuillets, en compte à lui seul la moitié (56 sur 234). J'ai vérifié chacune de ces lettres sur les images, la lettre attendue sous les yeux (15 octobre 2026) : sur 133, 99 sont bien écrites autrement sur le formulaire, 18 peuvent se lire comme la lettre attendue, 16 restent incertaines. Ces statistiques et les comparaisons qui suivent portent sur l’échantillon initial vérifié le 15 octobre 2026 ; elles excluent les deux ajouts des 6 et 7 mars 1915.
La méthode n'explique presque rien. L'édition de 1915 combine deux lectures indépendantes, celle de 1916 ma seule lecture ; mais à lecteur constant — ma lecture aveugle de 1915, seule —, l'écart avec le chiffre attendu est d'environ 7 % en 1915, contre 18 % en 1916. Les formulaires de 1916 sont moins fidèles, et les écarts se concentrent sur trois paires de lettres :
| lettre attendue | 1915 (ma lecture aveugle) | mai 1916 (vérifiée sur l'image) |
|---|---|---|
| v (clair n) | v 41 fois sur 47 | v 18 fois, n 23 fois |
| r (clair i) | r 51 fois sur 51 | r 7 fois, i 24 fois |
| h (clair y) | h 46 fois sur 47 | h 16 fois, y 7 fois |
Ces erreurs ne viennent pas de la transmission : en morse, n et v, i et r, h et y n'ont rien de commun. Elles naissent quand quelqu'un lit une écriture cursive — sans doute l'employé qui recopie au guichet le message manuscrit de l'expéditeur — et vont presque toujours dans le même sens : un v attendu devient n, jamais l'inverse ; un h devient y, jamais l'inverse. Deux causes sont possibles, sans que l'on puisse trancher. Des télégrammes écrits à la hâte : en mai 1916, Sun dirige le soulèvement depuis Shanghai (« now very busy »), et le chiffrement lui-même est plus négligé, avec des mots entiers laissés en clair (know, own, iron, trunk) et même un demi-mot (anxi-ous). Ou d'autres employés : à Shanghai, des télégraphistes lisant une écriture latine qui n'est pas la leur ; les deux télégrammes de Ching-ling partis de Tokyo présentent toutefois les mêmes fautes.
La clé aggrave l'effet : elle échange justement des lettres qui se ressemblent (a/u, c/s, e/o, h/y, i/r, l/t, n/v…), si bien que la moindre hésitation d'écriture donne une lettre plausible à l'œil, mais fausse pour le déchiffrement. La clé de 1916 reste bien celle de 1915 : une variante trouvée d'abord par recherche automatique (v↔p, n, i et r inchangés) n'était qu'un effet de ces erreurs ; elle est contredite par chaque v du clair, que le formulaire écrit n et jamais p.
À notre connaissance, ni ce système ni ces textes n'avaient été publiés : ils sont absents des notes de Daniel Bourdeau[2], de Cryptiana[8], de l'historiographie du mariage[18][19] et de la biographie de J. Chang et J. Halliday[20] (vérifié le 15 octobre 2026).
Prolongement : mai–juin 1916, une clé connue sur des télégrammes nouveaux
Ici, la clé n'est pas nouvelle : les télégrammes Tokyo → Shanghai (« Junzaburo ») de mai 1916 sont chiffrés avec le condensateur « Yamada », déjà identifié et publié[1, 2]. Ce qui est nouveau, ce sont les télégrammes eux-mêmes. Les transcriptions publiées s'arrêtent au dossier JACAR B03050089100 (fin mai) ; en ouvrant les envois suivants du ministère des Communications (B03050089000, B03050089200, B03050089400), j'ai trouvé dix télégrammes de la même série, du 17 mai au 15 juin, jamais transcrits.
La méthode est celle du reste de l'enquête, appliquée à rebours : la clé étant connue, tout repose sur la lecture des lettres. Claude a lu chaque formulaire sur le scan ; là où un caractère n'avait pas de sens, il a cherché la ou les lettres qui, changées une à une (confusion de copiste ou de Morse), donnaient un texte sensé ; je les ai ensuite vérifiées sur l'image, une par une, sachant ce qui était cherché (lots V1–V6, environ 40 points : la grande majorité confirmée, quelques-unes rejetées, que le texte garde comme douteuses). Contrôles indépendants de la clé : la rime de date concorde avec le formulaire, la signature 持 (Xie Chi) revient, et les personnes nommées (席正銘, 趙瑾卿, 廖仲愷, 居正, 萱野) sont réelles et du bon milieu. Résultat : voir la page Télégrammes.
Début mai 1916 : les réponses de Shanghai. Le lot du début mai contient, outre les télégrammes de Tokyo, des réponses de Shanghai à Tokyo : elles se lisent avec la même clé « Yamada », employée dans l'autre sens, et l'une est signée 文. Il contient aussi un télégramme de Manille relayé vers Shanghai, lu avec la clé de Manille à Tōyama déjà publiée[1]. Les mots douteux ont été vérifiés à l'image par Brice Dudout.
Le « w » du 10 mai : un parti pris, et une piste. Sur le formulaire du 10 mai (0042a), le chiffreur écrit deux fois w là où la table « Yamada » attend un p (« xetuwotedi », « rusidewari »), alors que le même formulaire emploie aussi p. Le w n'existe pas dans l'alphabet de « Yamada » (vingt consonnes, sans w), et ce n'est pas une faute de plume plausible. Nous le traitons donc comme un choix assumé : w est une seconde forme du p (un homophone), et la page Télégrammes lit ce télégramme avec la table « Yamada » où w vaut p ; les lettres y sont données telles qu'elles sont écrites. Parmi les vingt valeurs possibles pour w, celle du p est nettement la meilleure, et la seule qui donne 「昨日到」 et 「乘原船」 ; le reste de la table est inchangé (la signature 持 et la date 灰, le 10, tombent juste). Deux k du même formulaire semblent aussi tenir lieu de p (事, 灰) : ils restent des propositions. La piste du w a ensuite conduit à un résultat : les télégrammes de Tokyo sans indicateur et ceux de Shanghai à « Ylchang » ont livré la table de Huang Xing, dont l’ordre des consonnes est effectivement permuté. Certains messages restent hors de cette lecture, comme indiqué dans cette section. G0 suit pour sa part un alphabet inversé, décrit plus haut.
Honolulu : une variante « Aloha » de la clé. Le télégramme d'Honolulu du 30 avril (préfixe en clair « Aloha », adressé à « Rosamonde », c'est-à-dire Sun Yat-sen) emploie un w, absent de l'alphabet des condensateurs, à côté de v. Il se lit avec la clé « Honolulu » déjà publiée[1] en donnant au w la valeur du v : une seconde forme de la même lettre, comme le w du p le 10 mai. Nous le présentons comme une variante « Aloha » de cette clé. Le télégramme est signé 鐵城 (Wu Tiecheng, alors à Honolulu) et se lit 「黃轉到日,換船赴滬。鐵城」 (« Huang [Xing] passe au Japon et y changera de navire pour Shanghai »). Trois lettres y sont corrigées comme des erreurs de transmission (deux fois s reçu pour r, une fois o pour e) ; le premier caractère, 黃, est restitué d'après le contexte : Huang Xing arrive au Japon le 9 mai (télégramme 0042a).
Deux flux de la même période semblaient résister : des télégrammes de Tokyo sans le préfixe « Thirtyseventh », qui partagent entre eux des suites de lettres répétées, et ceux de Shanghai à « Ylchang » (Huang Xing). Ils se lisent en fait avec une même table, nouvelle : voir la table de Huang Xing.
Une table nouvelle : « Thirtyeight » (mai 1916)
Deux télégrammes de Tokyo du début mai portent un autre préfixe en clair, « Thirtyeight » au lieu de « Thirtyseven ». Le test sans clé y montre une table du même type (deux lettres → deux chiffres), mais la clé « Yamada » ne les lit pas. Une recherche sur la famille des tables de condensateur (point de départ des consonnes, ordre et sens des voyelles, décalage : 57 600 tables) en sort une nettement en tête (z = 6,7) : consonnes dans l'ordre alphabétique à partir de k, voyelles e a i u o, valeur = 20 × rang de la voyelle + rang de la consonne + 1 (modulo 100). C'est la construction de « Yamada » (consonnes à partir de q, voyelles e u i o a) avec d'autres paramètres. Elle lit le télégramme du 12 mai sans changer aucune case : 「箱已交犬塚,十五日附法船來。若有要事,請電如下」 (« la caisse a été remise à Inuzuka ; elle partira le 15 par un navire français ; pour toute affaire urgente, télégraphier à… »), suivi d'une adresse en clair ; une seule lettre y est corrigée (d → x, une confusion de copie déjà relevée ailleurs). À notre connaissance, cette table n'avait pas été publiée. Elle lit aussi le second télégramme « Thirtyeight », du 11 mai : 「聞張繼已回日,頗奇,是否?」 (« j'apprends que Zhang Ji est rentré au Japon ; c'est très surprenant — est-ce vrai ? »), avec une lettre corrigée (o → e).
Une seconde table nouvelle : la table de Huang Xing (fin mai – juin 1916)
Du 26 mai au 6 juin 1916, des télégrammes partent de Tokyo pour « Junzaburo » (Shanghai) sans le préfixe « Thirtyseven ». Aucune table connue ne les lisait[2], [8], mais deux observations ont guidé la recherche. Le télégramme du 6 juin reprend la fin de celui du 3 juin, code pour code, en rétablissant neuf codes perdus à la transmission. Et trois télégrammes finissent par les mêmes deux codes, quelle que soit leur date : ce n'est pas une date (comme le « 持 » suivi de la rime du jour chez Xie Chi), mais une formule de fin et une signature.
À ne pas confondre avec le code à trois kana d'un autre télégramme de Huang Xing (25 mai 1916, à Lin Hu et Li Genyuan), dont le système a été identifié par D. Bourdeau et la formule par S. Tomokiyo[22][23].
Le test sans clé y montrait une table de coordonnées (la consonne porte la dizaine). Nous avons donc cherché, par recuit simulé, une table où chacune des vingt consonnes occupe un bloc de cinq valeurs consécutives, dans un ordre quelconque, les voyelles suivant un ordre commun ou alterné. La recherche a d'abord été étalonnée : des télégrammes déjà lus, rechiffrés avec une table de cette famille tirée au hasard, ont été retrouvés entièrement (12 sur 12). Sur six télégrammes de Tokyo (140 codes), les six essais indépendants aboutissent à la même table, très au-dessus du témoin (les mêmes syllabes mélangées) : 4,26 contre 0,73 par code.
La table est d'une grande régularité : consonnes dans l'ordre d c b t h j f q g k n m p s r l x w z v, chacune sur cinq valeurs consécutives numérotées de 01 à 99 puis 00 (du = 01, di = 02 … va = 00), voyelles dans l'ordre u i o e a. Les télégrammes de Tokyo finissent tous par 覆。興 (« répondez. — Xing ») : Huang Xing, à Tokyo depuis le 9 mai. Sans changer une case, la même table lit aussi des télégrammes de Shanghai à « Ylchang » (Huang Xing) signés 文 ou 孫文 (Sun Yat-sen) ; celui du 6 juin finit par la date 魚, le 6, celle du formulaire.
Ce qu'ils disent : le 3 juin, Huang Xing a vu Tanaka (田中, sans doute Tanaka Giichi, vice-chef d'état-major) : 「槍二千、砲六門不日可運」, 2 000 fusils et 6 canons pourront partir sous peu ; le 31 mai, 200 000 de fonds et des armes, et Hu Hanmin (漢民) chargé de prier Aoki (青木) d'intervenir de nouveau auprès des autorités ; [les Japonais] ne souhaitent pas que Sun se rende en hâte au Shandong, et Huang propose une médiation de Zhang Ji (溥泉) et d'un militaire de prestige. Neuf télégrammes sont lus ; les lettres douteuses ont été vérifiées sur les formulaires par Brice Dudout (lecture aveugle au sens), et les télégrammes figurent sur la page Télégrammes. Deux télégrammes de Shanghai à « Ylchang » (29 mai et 8 juin), d'un autre expéditeur (mêmes codes d'ouverture et de fin), ne se lisent pas avec cette table.
À notre connaissance, cette table n'avait pas été publiée : ces télégrammes figurent comme non lus dans les notes de Daniel Bourdeau[2] et sur Cryptiana[8] (vérifié le 15 octobre 2026).
Outils
- Sources : PDF publics de JACAR[3]–[6] ; tables du code télégraphique chinois (Unicode Unihan, champs
kTaiwanTelegraphetkMainlandTelegraph)[10]. - Corpus de langue : textes de Sun Yat-sen sur Wikisource[12], télégrammes de 1916 du site Sunology[11] ; segmentation
jieba[14] ; variantes de caractères via OpenCC[13]. - Calcul : Python 3 (NumPy) pour les tests, la préparation et les scores ; solveurs en C++17 (
clang++ -O3 -march=native -pthread) par recuit simulé et recherche locale itérée :anchor_sa,anchor_arr(arrangements, retenue et décalage ±111),anchor_coordetanchor_coord6(tables de coordonnées). Un portable à 8 cœurs suffit. - Lecture : interface HTML locale de lecture aveugle (extraits anonymes mélangés, export JSON) et script de fusion des lectures.
- Une collaboration homme–IA : j'ai mené l'enquête avec Claude (Anthropic) — Claude Opus 5.5 à partir de la séance C14, Claude Fable 5.1 pour la séance C31, celle du déchiffrement ; les toutes premières séances (C01–C13) avaient été faites avec Codex. Claude a écrit les solveurs, les tests et le journal, et proposé des hypothèses et des contrôles ; j'ai lu le chiffré sur les images, arbitré les lectures, décidé des pistes et des critères, et écrit ces articles avec lui.
Le solveur, les deux clés, les données de lecture et le modèle de langue sont publiés dans le dossier solver/ du dépôt GitHub, avec de quoi rejouer la recherche ; le journal complet de l'enquête le sera ensuite.
