モジュール詳細:紅色暗号

この混乱は俺の墓石に刻まれるだろう……。

モジュールは、3つのディスプレー、キーボード、2つの矢印、及び現在のページを表示するボタン(送信ボタン)で構成されている。

右の矢印を押すと、次のページに移動できる。左の矢印を押すと前のページに移動できる。ページは全部で3ページある。

ステップ1:転置半ポリュビオス暗号

このステップでは、暗号化された単語と、1ページ目の2つのキー(それぞれ分離キーと転置キーと呼ぶ)を使用する。

始めに、分離キーを取得し、最初に出現したものを除いた重複する英字を削除しつつ、半ポリュビオス暗号表の左半分に読み順で入力する。残りのアルファベットを一文字ずつ加え、足りなくなったら右半分に移動する。半ポリュビオス暗号表は、下図のような配置である。

1234512345
1
2
3####
LR

暗号化された単語の各英字を三つの座標に変換し、左右、段、列の順番に上から下に記録し、直前の英字の右隣に並べる。

その後、転置キーの各英字ごとに、それを半ポリュビオス暗号表から探し、先程作成した6×3座標行列に対して以下の処理を行う。

  • これが奇数回目の処理の場合、その英字がある段と同じ行列内の行を、列座標の数字だけ左にずらす。
  • この際、2段目にある3と3段目にある4と5は動かしてはいけない。動かせる数字のみに注目して処理すること。
  • これが偶数回目の処理の場合、現在のキーの文字の列座標に等しい行列の列から開始し、必要に応じてループしながら、段座標の数字だけ右に進んで数えていく。この手順で取得した2つの列を入れ替える。

最終的な行列の各列を読み取り、半ポリュビオス暗号表からその英字を探し、新たな暗号化された単語を取得する。

暗号化された単語:BTYNJR
分離キー:MOTIVATE
転置キー:ROUGH

1234512345
1MOTIVJKLNP
2AEBCDQRSUW
3FGH##XYZ##
LR
処理前1回目:R2回目:O3回目:U4回目:G5回目:H
LLRRRR
213112
332412
LLRRRR
113221
332412
LRLRRR
131221
323412
LRLRRR
131122
323412
LRLRRR
121132
313422
LRLRRR
121132
223413

新たな暗号化された単語:ORTNXS

ステップ2:二重三要素リフレクター暗号

このステップでは、2ページ目の3つのキーワードと、暗号化された最初の単語が必要になる。最初2つのキーワードは、2つの三要素リフレクターを作成するために使用され、3つ目のキーワードは、各暗号化ステップ完了後にリフレクターをシャッフルするために使用される。

三要素リフレクターを作るには、キーワードとアルファベットを順に連結して文字列を作り、重複する英字を先頭を除いてすべて取り除き、その文字列を中央に穴のあいた3×9の格子に読み順で並べる。一番目のキーワードから作られた三要素リフレクターは上段のリフレクターであり、二番目のキーワードから作られたものは下段のリフレクターである。

暗号化された単語の各英字に対して、上段のリフレクターからその英字を見つけ、次に下段のリフレクターから同じ位置にある英字を見つける。この英字は一つ目の中間文字である。上段のリフレクターからその文字を見つけ、次に下段のリフレクターから同じ位置にある文字を見つける。上段リフレクターからその文字を見つける。この英字は二つ目の中間英字である。その後、下段のリフレクターと同じ位置にある英字を探し、復号された単語の英字を見つける。

各リフレクター内で、中間文字を見つけた列と段を記録する。一つ目の中間文字は下段のリフレクターから、二つ目の中間文字は上段のリフレクターで見つかったことを念頭に置くこと。次の英字を復号する前に、両方のリフレクターを次のように再配置する。

  • 現在の位置にある3つ目のキーワードの英字に対し、アルファベット上の位置の数字を三進数で取得する。
  • これが奇数回目の処理の場合、取得した値の上位2桁を三進数で取得し、一つ目の中間文字が見つかった段をその数だけ左にずらし、二つ目の中間文字が見つかった列を最下位桁と同じ数だけ下にずらす。
  • これが偶数回目の処理の場合、一つ目の中間文字が見つかった列を、取得した値の最上位桁と同じ数だけ下にずらし、下位2桁を三進数で取得し、二つ目の中間文字が見つかった段をその数だけ左にずらす。
  • リフレクターを動かす際に、穴は移動させないこと。

暗号化された単語:ORTNXS
上のディスプレー:SKIPPER 真ん中のディスプレー:JOKING
キーワード3:LEASE

SKIPERABC
DFGH JLMN
OQTUVWXYZ
---------
JOKINGLYA
BCDE FHMP
QRSTUVWXZ

O -> Q -> R -> G
L -> 12 -> 110 左に11(三進数)回、下に0回

SKIPERABC
DFGH JLMN
OQTUVWXYZ
---------
JOKINGLYA
BCDE FHMP
UVWXZQRST

R -> G -> D -> B
E -> 5 -> 012 下に0回、左に12(三進数)回

SKIPERABC
LMND FGHJ
OQTUVWXYZ
---------
JOKINGLYA
BCDE FHMP
UVWXZQRST

T -> W -> Q -> V
A -> 1 -> 001 左に00(三進数)回、下に1回

SQIPERABC
LKND FGHJ
OMTUVWXYZ
---------
JOKINGLYA
BCDE FHMP
UVWXZQRST

N -> D -> E -> N
S -> 19 -> 201 下に2回、左に01(三進数)回

QIPERABCS
LKND FGHJ
OMTUVWXYZ
---------
JODINGLYA
BCWE FHMP
UVKXZQRST

X -> R -> N -> W
E -> 5 -> 012 左に01(三進数)回、下に2回

QINERABCS
LKTD FGHJ
OMPUVWXYZ
---------
JODINGLYA
BCWE FHMP
VKXZQRSTU

S -> A -> G -> H

ステップ3:カエサルシャッフル暗号

このステップでは、ステップ2の暗号化された単語と、3ページ目の2つの5文字のキーワードが必要になる。

両方のキーワードの各英字について、以下のステップを実行する。

  • 暗号化された単語のX番目の文字の後ろに目印を置く。Xは、現在の位置にある一つ目のキーのアルファベット上の位置を5で割った余りに1を足した値に等しい。目印の左右にある2つの文字列を入れ替える。
  • 左側にある部分文字列を、現在の位置にある二つ目のキーのアルファベット上の位置の値だけ前方にカエサルシフト(A -> B)する。目印を削除する。

暗号化された単語: GBVNWH
キーワード1: GROSS
キーワード2: CRASS

GBV.NWH -> NWH.GBV -> QZK.GBV -> QZKGBV

QZKG.BV -> BV.QZKG -> TN.QZKG -> TNQZKG

T.NQZKG -> NQZKG.T -> ORALH.T -> ORALHT

ORALH.T -> T.ORALH -> M.ORALH -> MORALH

MORAL.H -> H.MORAL -> A.MORAL -> AMORAL

復号された単語: AMORAL

復号された単語を取得したら、それを送信する。入力を開始すると、全てのディスプレーが暗転し下のディスプレーに入力された文字が表示される。

入力を消去するには、いずれかの矢印をクリックする。ページが移動し、入力した文字列が消去される。6文字を超える入力はできないようになっている。

入力に問題がなければ、「SUB」と書かれたボタンを押して、回答を送信する。ミスが記録された場合、モジュールの最初のページに戻るが、暗号の再生成はされない。