Solution of Two Chinese Cipher Telegrams Archived in Japan (1916)

The present article describes Daniel Bourdeau's solution of two Chinese cipher telegrams (1916) in the Japanese archives, which I presented in another article.

Sun Yat-sen's Code Condenser (1916)

3 April 1916, from a "Tanaka" to Sun Yat-sen
Twelve baxuxupeja
qicijinati bemigasiqi
jakebiqoye kufohemige
tuxaboboba gedoeijiga
poyevayoxa leyoleveke
biromapesa vorobenife
xikebiqoye qekufiyaqa
tijaqixiqo xitohatula
xopavajejo ropezpo
ngobunibai tanaka
(JACAR B03050738800)

A cipher telegram from Tanaka to Sun Yat-sen, dated 3 April 1916, is preserved in the Japanese archives (JACAR B03050738800). Daniel Bourdeau notified me of his solution on 15 September 2026. For full details of his solution and analysis, see his github.

The message consists of 10-letter codes, except for "Twelve" at the beginning (seemingly an indicator specifying the table used) and several groups at the end. Judging from the syllable structure including "qi", "xu", etc., the message may be considered to be created by a code condenser.

Code Condenser

A code condenser translates a four-digit code number into a 4-letter group. Regrouping of such groups into 10-letter groups for transmission reduces the number of telegraphic words and thus the cost.

As an example, the phrase "明密碼電報" is encoded with a codebook as:

2494 1378 4316 7193 1032 ....

Translating every two digits into two letters (consonant+vowel) gives:

cete ziqi hibu puti yafo ....

Regrouping into ten-letter groups gives:

ceteziqihi buputiyafo ....

Since the international telegraph regulations at the time allowed a pronounceable "word" up to the length of ten letters to be transmitted at a charge for one word (see another article), code condensers served for packing as much information as possible into a "word." If the translation table is kept secret, a code condenser could serve as a means for superencipherment of codebook codes.

Known Code Condensers

Can one identify the specific code condenser used? I had tried the two known code condensers of Yamada Junzaburo, who supported Sun Yat-sen, but they could not read this telegram (see my blog).

Given that there were a variety of code condensers (see another article), the number of candidates seemed infinite and I thought it would be impossible to identify the one used here, even if the search range may be somewhat limited by the fact that the standard codebook did not have the figures in the 9000s.

Reconstructing the Code Condenser

Bourdeau noticed that the candidates can be narrowed by inspecting the two known code condensers.

From these two specimens, he assumed that

- the condenser table was from the same family of tables with 5 vowels x 20 consonants (the present table is no.12 ("Twelve"), while one of the known tables is marked "no.64");

- vowels may be arranged in 5!=120 permutations, while the 20 consonants occur only in 20 cyclic shifts with possible reversal (hence 40 patterns);

- the numbers may be filled row-wise or column-wise (2 patterns); and

- 00 may be placed at the beginning or the last (2 patterns).

With these assumptions, the number of candidates is 120x40x2x2=19,200.

In view of Sun Yat-sen's known telegrams using an additive of 111 (see another article), he further allowed for three possibilities (presumably, no additive, addition, or subtraction). Thus, the total number of candidate keys amounts to 57,600, not intractably large at all!

Brute force attack was conducted. Specifically, he applied each candidate key table to the letter pairs in the telegram to obtain a sequence of four-figure groups, calculated the cost for the resulting sequence with respect to "a traditional-Chinese character frequency model", with unknown codes penalized. This revealed a single key that scored far better than any other.

The key he obtained is as follows. (See his github for further details and decrypted reading.)

Huang Xing's Three-Kana Code (1916)

REKUTATA UHOYAKATE SEKANAOKU SAKEKINISE OSUKAKUCHI REUHONIUSU MAKASUSAKU FUREOHIHE YENIKIYEHI TAKASUREU SASHIKIHE WAONIAAHO SAYEHITE UHINAKUTA NEATEMUYE SUHEUHAKA YESOMIKANU TEASUUKU TSUHAKOSE KEKININAKI TEAKETASHI KONUOHIKE HIMIKANO SHIKUSAHE UHATAKASA KEKINIKA ATAREUSASU OSO YUA NIRA KISU

There is a telegram (JACAR B03050731500) that Huang Xing (黄興) (Wikipedia) sent to Lin Hu (林虎) (Wikipedia) and Li Genyuan (李根源) (Wikipedia) in 1916. The three opposed Yuan Shikai, albeit separately from Sun Yat-sen, after the Chinese Revolution, and resided in Japan during some periods.

This is not technically "unsolved", because the decryption as well as a version rendered in Japanese word ordering (with some annotations and paraphrasing) are attached to it. Still, I could not find out its encryption scheme (see my blogpost)

Three-Kana Code

This is different from what would result from the code condensers above in that there are no Cs or Ls, and that there are SHI, CHI instead of SI, TI, etc., which indicates that the syllables are taken from Japanese syllabary. It was not certain for me whether this employed some code condenser or any other encryption scheme.

Bourdeau identified that this is a three-kana code (see his github).

Alignment

His transcription of the decryption in Chinese is as follows.

隱印崧誥邕行諸兄鑒正發書 間適接哿電敬悉一切護國 軍能速入湘贛甚好[章]行嚴何日 東渡望速啓行先電示興徑

Straightforward splitting results in inconsistencies for characters occurring multiple times (行, 電, 速). Bourdeau then thought of omitting 章, which appears to be inserted afterwards, and dropping one syllable (A) at position 106, which yielded perfectly consistent correspondence in every instance: 行 (KE KI NI), 電 (RE U SA), and 速 (HE U HA).


(23 September 2026: In stead of dropping A, the transcription O HI should be corrected to CHI. See the subsection "Three-Kana Code" in the next section.)

Character-Kana Mapping

What remains is how the characters are mapped to three-kana code. One would expect that when the characters are sorted according to associated figures in the standard Chinese telegraph code, the kana codes follow some natural ordering (either in A-I-U-E-O order or I-RO-HA order). But it is not the case. (Bourdeau tried all 10!=3,628,800 permutations of the ten consonant rows in the Japanese syllabary.)


The possibilities I can think of are:

- Characters with code numbers under 2000 aligns in A-I-U-E-O order. Is this a coincidence?

- Did I use a wrong edition of the Chinese codebook, Dian bao Xin bian (電報新編)?

- Is there not an error in the transcription?

- Three-kana code was becoming popular in Japan (see another article, e.g. 1906 and 1915 editions of IROHA Code). Is there any chance that the codebook is Japanese?

(23 September 2026: I successfully identified the mapping formula. See below.)

Deciphering of Telegrams Related to Sun Yat-sen in JACAR

A few days after identifying the code condenser to decipher the telegram to Sun Yat-sen ("the Swatow telegram", from JACAR B03050738800) above, Daniel Bourdeau found that the telegram was part of a collection of many telegrams (March 1916 to June 1917), which are copies provided by the Communications Bureau of the Japanese Ministry of Communications to the Foreign Ministry (外務省記録 1.6.1.4-2-1-2, 各国内政関係雑纂/支那ノ部/革命党関係(亡命者ヲ含ム)/特定人ノ発受郵便物取調, vols 2–4: B03050088300, B03050088400, B03050089100, B03050090000, B03050090100, B03050090200). He succeeded in deciphering many of them.

Hopefully, his achievements shed new light for researchers of Sun Yat-sen. For example, a telegram from Shanghai dated 19 May 1916 reports "Yingshi was shot dead by assassins yesterday afternoon in the Yamada house; one assassin and several accomplices arrested." (Bourdeau's translation) It is a report of the assassination of Chen Qimei (陳其美, courtesy name Yingshi [英士]) (Wikipedia), who worked with Sun Yat-sen against Yuan Shikai's dictatorship but was assassinated on the day before - 18 May 1916.

Here, I will limit myself to cryptography.

Family of Code Condensers

Many telegrams were read by applying the same family of code condensers as above to translate the four-letter groups back into four-digit codes that can be looked up in the standard Chinese character code. This revealed seven keys with different permutations of the vowels and different starting positions of the consonants (one uses the reverse alphabet, none uses additives). One key is "Thirtyseventh".

Unsolved Telegrams in Schemes outside the Family Condensers

Bourdeau's search found some telegrams that could not be read with the above family of code condensers. He notes the following remains open:

From July 1916 to June 1917, some (but not all) of the telegrams apparently used a different code condenser, with an additional vowel (y) and consonant (w). Bourdeau's search of about 200,000 tables with the extended pattern found nothing. Judging from the prefix 文密, he considers this involves a table rather than a rule.

The prefix "wen mi" (文密, encoded as 2429 1378 according to the standard Chinese character code) is found, for example, in JACAR B03050090000, (frame 0416, the left piece; July 1916). (The right piece on the same frame has a preamble "6567 2429 5028 6567 3329 4206 Cg": 轉(forwarding)文羣(Wen Qun(Wikipedia, Baidu) 轉(forwarding)滇督(Governor-General of Yunnan). This 文 has nothing to do with 文密.)

For JACAR B03050090200, frames 0509, 0511 (June 1917), Bourdeau observes that groups in these telegrams include sequences that are not consonant–vowel pairs ("myzoasdoke", "liriopen" on frame 0511).

Yamada's telegram from late May 1916 with no prefix "Thirtyseven" cannot be read with the May 1916 key "yamada1916", which could read every telegram indicated "Thirtyseventh". Since two of them use w as a consonant, Bourdeau considers these are probably early 文密.

Three-Kana Code

Bourdeau did not address the message in three-kana code (B03050089100, frames 0076–0078), which is partially read in frames 0079-0081.

This gives the following three-kana code groups (where only those for which the reading of the handwriting is relatively certain are given). These additional materials help identify the mapping between the character and the three-kana code groups.

One can see that this is the same as the three-kana code in Huang Xing's telegram discussed above, in view of common codes: 入 (カエソ), 望 (シクサ), 行 (ケキニ), 軍 (ネアテ). Moreover, 日 (シコヌ) and 東 (チケヒ) reveal that A need not be omitted. Instead, my transcription O HI can be corrected to CHI.

Moreover, when this list is sorted by character code, one immediately sees that the first character is in A-I-U-E-O order albeit row-by-row (アカサタナハマヤラワ in the A row, イキシチニヒミリヰ in the I row, ウクスツヌフムユル in the U row, エケセテネヘメレヱ in the E row, and then オコソトノホモヨロ in the O row). In Huang Xing's telegram, the number of characters was not enough to see the pattern, except that characters in the A row was in A-I-U-E-O order.

Closer inspection reveals that incrementing the character code by 1 steps forward the second character in a cycle of 10 (アイウエオカキクケコ). When the fastest cycle completes, the third character steps according to the reverse A-I-U-E-O order within a subset of サ to ホ (ホヘフヒハノネヌニナトテツチタソセスシサ).

With Microsft Excel, for a character code at A1, the three-kana representation can be obtained by the following formula:

=MID("アカサタナハマヤラワイキシチニヒミリヰウクスツヌフムユルエケセテネヘメレヱオコソトノホモヨロ", INT(VALUE(A1)/200)+1, 1) & MID("アイウエオカキクケコ", MOD(VALUE(A1)-1, 10)+1, 1) & MID("ホヘフヒハノネヌニナトテツチタソセスシサ", MOD(INT((VALUE(A1)-1)/10), 20)+1, 1)

In the following, the fourth column is the three-kana code calculated by Excel, which matches the first column for most cases. Unmatching instances are where I'm not sure of my transcription of the handwriting. (It is important to reiterate here that the characters hard to read for me are not included here.)

The above formula reproduces the three-kana code of the Huang Xing telegram except for a few. In the following, the fourth column was calculated from the formula.

Wen-Mi Code Solved

(October 2026) Among the telegrams left unread by Bourdeau, two systems were identified by Brice Dudout with Claude (Anthropic).

He identified two code condensers but two telegrams from 1917 are still unread.

7 Telegrams from Tokyo to the Military Affairs Council in Canton (June to September 1916)

The first system identified was those indicated Wen-Mi (文密). It was used in seven telegrams from Tokyo to the Military Affairs Council (軍務院, Junwuyuan) (Wikipedia), set up against Yuan Shikai, in Zhaoqing (肇慶), Canton (June to September 1916). The sender "伸" (Shen) was identified to be Zhao Shen (趙伸) by a historian.

His first attempt of simulated annealing by setting aside Bourdeau's constraint to 57,600 patterns did not work. With no constraint to fill the 100 cells, the key space was too large. An experiment showed that it yields overfitted solutions, i.e., a solution that fits telegrams being analyzed but does not read a new telegram (he reserved one telegram for such validation, not using it in key search). On the other hand, control experiments with ciphertexts made up from known plaintext showed that the annealer was capable. He later found that several anchors given during the training were wrong.

Then, he remembered that most of the four-digit Chinese telegraph codes are in the range 0000 to 7999. That is, 8 or 9 seldom occurs in the thousands place. With this in mind, he examined frequencies of first pairs of digits (representing thousands and hundreds) and found that the distribution of consonants is extremely skewed: h and g dominated, while l, p, and m never occurred. This showed a coordinate system as used for other telegrams was also applicable here. That is, consonants represent tens digits (i.e., pairs with the same consonant but different vowels differ only in units digits), while vowels represent units digits.

This constraint significantly reduces the search space, while accommodating patterns not in Bourdeau's 57,600.

The new solver yielded the following condenser table (G0). Actually, the output of the solver had some irregularities, but it was found that the regular assignment improves the score. (It has W instead of J, but this must have been observed from the first and posed no problem.)

A striking difference from code condensers already identified is the boustrophedon writing (first from left to right, then right to left and so on.)

15 Sheets between Tokyo and Yunnan (雲南) (July to November 1916)

Zhao Shen's correspondence with Yunnnan was not in Wen Mi but had an indicator "Cg". It employed a sixth vowel "y".

Frequency checking (see above) showed it should have a coordinate system (it will be seen that the table obtained in the end does not completely follow the rule of tens indicating consonants and units indicating vowels) but annealing failed.

A breakthrough came from human reading of the beginning and ending of the telegrams.

A plaintext telegram of 5 November (frame 0489b) ends in 伸歌, where 伸 (character code 0135) is the signature and 歌 (2960) is a code for the fifth, while a cipher telegram from the same date ended in "buky hary". This suggested buky=伸 (0135) and hary=歌 (2960).

A telegram from 11 November ended in foha=尤 (1429).

Five values inferred from these (bu=01, ky=35, ha=29, ry=60, fo=14) perfectly fit a regular coordinate grid with six vowels (see the highlights in the above image). Application of this table revealed reading that matches historical facts and correctly reproduced date codes.

While Dudout says there remain uncertain characters, we may consider the identified table to be generally correct.

Telegrams between Sun Yat-sen and Dai Jitao (戴季陶) (June 1917)

The telegrams of frames 0509 (24 June 1917) and 0511 (29 June 1917) remain unsolved, for which Dudout provides transcriptions.



©2026 S.Tomokiyo
First posted on 18 September 2026. Last modified on 23 September 2026. Encoded in UTF-8.
Articles on Historical Cryptography
inserted by FC2 system