[JoGu]

Cryptology

Adjusting the Columns of a Disk Cipher

a7Hzq .#5r<
kÜ\as TâÆK$
ûj(Ö2 ñw%h:
Úk{4R f~`z8
¤˜Æ+Ô „&¢Dø

Procedure

As a last application in this chapter we look at the problem: How to adjust the alphabets in the columns of a disk cipher? From Chapter 2 we know that this works only when the primary alphabet is known.

Imagine a ciphertext from a disk cipher whose period l we know already. Write the ciphertext in rows of length l. Then the columns are monoalphabetically encrypted, each with (in most cases) another alphabet. We expect a χ-value of about 1/n for each pair of columns.

Since the alphabets for the columns are secondary alphabets of a disk cipher they differ only by a relative shift in the alphabet. There are 26 different possible shifts. These can be checked by exhaustion: We try all 26 possibilities (including the trivial one, bearing in mind that two columns can have the same alphabet). The perfect outcome would be 25 values near 1/n, and one outcome around the coincidence index of the plaintext language, clearly indicating the true alphabet shift. The experimental results give hope that the real outcome should approximate the ideal one in a great number of cases.


Example 1

Let us try out this idea for our usual ciphertext. We are pretty sure that the period is 7. (And we also adjusted the columns by visual inspection.)

The first two columns are

  ARCYPMEAZKRWKHZLRXTRTMYYRLMTVYCMRBZZKOLKKTKOTCUKKOMVBLYUYYZALR
    OEKWZMWZZRYZOOTUYURMTYYSOZEKLYVUYBYTZYKOVMYYMZMZVYROKYTYMUWZ
    PZTZLSPLYLZVYYYBYMQMWWRXZYOKKMYZTZAKQZZT
  OMZYYDMYPQMHMFKAMMAACDNNZPIMYZHCJSCNCJQMMYLEMMPNNPZYSNYHPNMOAM
    CAJMPZIVNMPADAHNKFNNAHNVFJHFXNYPNSYFMKNFMDNPZFGJMVMCMXYZZMQC
    MSYIMVAMKZOANZVSZFKMYEMQHZQMNDPMHDMKIYJF

Using the Perl script adjust.pl we get the results

Shift:
χ:
0
0.0499
1
0.0365
2
0.0348
3
0.0285
4
0.0320
5
0.0341
6
0.0298
7
0.0416
8
0.0307
9
0.0421
10
0.0402
11
0.0448
12
0.0799
13
0.0495
14
0.0373
15
0.0375
16
0.0293
17
0.0330
18
0.0276
19
0.0307
20
0.0306
21
0.0316
22
0.0352
23
0.0338
24
0.0461
25
0.0529

The result is clear without ambiguity: The correct shift is 12. Going through all 7 × 6/2 = 21 pairs of columns we use the Perl script coladj.pl and get the following results for the optimal shifts that are consistent with each other and with the results of Chapter 2.

Column:  0    1     2    3     4    5  
112
2418
315311
410246 21
5241220 914
631725 14195

Example 2

... has an extra page.


Author: Klaus Pommerening, 2013-Dec-23; last change: 2014-Jun-11.