モジュール詳細:シナプス暗号

ふむ……。どうやらこれは非常に馴染み深いもののようだ。

モジュールは、3つのディスプレーがあるウィンドウ、右側のページカウンター、前ページまたは次ページに移動するための2つの矢印ボタン、送信モードに入るためのボタンで構成されている。

モジュールを解除するには、以下の4ステップを利用し単語を復号する。

ステップ1:重畳暗号

1ページ目の上のディスプレーにある暗号化された単語と、2ページ目の上のディスプレーにあるキーワードを取得する。キーワード中の重複する英字を、最初に出現したものを残したまま削除する。アルファベット全体の文字列を取得したら、キーワードに表示されている文字をすべて削除する。

ポートの個数が素数の場合は、アルファベットをキーワードの末尾に置く。そうでない場合は、アルファベットをキーワードの先頭に置く。

作成したアルファベット(C)、2ページ目の真ん中と下のディスプレーに表示されているキーワード(A, B)を使用し、暗号化された単語のX番目にある英字に対して以下の手順を実行する。

  • AのX番目の英字からスタートする。BのX番目の英字に到達するまでの移動回数を、必要であればループしながら数える。
  • X番目の暗号化された英字から、先程のステップと同じ方向に、必要であればループしながらその回数分移動し、CのX番目の復号された文字を得る。

例:重畳暗号

ポートの個数は素数ではない

ページ2の上のディスプレー:DASHING

ページ2の真ん中のディスプレー:OBSESS

ページ2の下のディスプレー:KNOTTY

暗号化された単語:QUDMQA

BCEFJKLMOPQ RTUVWXYZDASHING

O -> K, Q -> M

BCEFJKLMOPQRT UVWXYZDASHING

B -> N, U -> R

BCEFJKLMOPQRT UVWXYZDASHING

S -> O, D -> L

BCEFJKLMOPQR TUVWXYZDASHING

E -> T, M -> Y

BCEFJKLMOPQRT UVWXYZDASHING

S -> T, Q -> C

BCEFJKLMOPQRTUVW XYZDASHING

S -> Y, A -> X

復号された単語:MRLYCX

ステップ2:論理三進数演算暗号

ステップ1の結果を取得し、これらの英字をそれぞれアルファベットの位置に変換する(A1Z26)。これらの数字を三進数に変換し、ちょうど3桁にならない場合は先頭に0を追加する。

次に、3ページに表示されているバイナリ文字列を取り出す。シリアルナンバーの最後の数字がシリアルナンバーの最初の数字と偶奇性が一致している場合、文字列の最初の3ビット同士をXORで演算し、最後の3ビット同士をXNORで演算する。そうでない場合、文字列の最初の3ビット同士をXNOR演算し、最後の3ビット同士をXOR演算する。

結果を1つのバイナリ文字列に連結する。そのビットを使って、3桁の三進数にそれぞれ次のような調整を行う。

  • 結果の二進数のX桁目が1の場合、X番目の三進数の各桁を1ずつ増加させ、2は0にループさせる。桁の繰り上がりは行わないこと。
  • そうでない場合、その桁の調整は行わない。

桁の増加が終わったら、000である三進数があれば、その三進数のすべての桁を再度1増加させる。

この新しい三進数を十進数に戻し、アルファベット上の位置の数字を用いて英字に戻す。

例:論理三項演算暗号

表示された二進数:110001, 101110

エッジワーク:シリアルナンバーの最初と最後の数字は偶奇性が一致していない。

ステップ1完了後:MRLYCX

MRLYCX
111200110221010220

110 XOR 101 = 011, 001 XNOR 110 = 000 連結後の二進数:011000

011000
111200110221010220
111011221221010220

変換後の結果:MDYYCX

ステップ3:双四角回転暗号

ページ4には、上から下の順に3つのキーワードがある。

一つ目のキーワードから、すべての「J」を「I」に変え、重複する文字を削除する。次に、「J」と最初のキーワードの文字を除いたアルファベットを取得する。

「エナ暗号(ENA Cipher)」が存在するか、シリアルナンバーを三十六進数とみなした際の各桁の和が奇数である場合、アルファベットを一つ目のキーワードの末尾に置く。それ以外の場合は、一つ目のキーワードの先頭に置く。

二つ目のキーワードから、すべての「J」を「I」に変え、重複する文字を削除する。次に、「J」と最初のキーワードの文字を除いたアルファベットを取得する。

「Holographic Memory」が存在するか、シリアルナンバーの数字の合計が偶数の場合、アルファベットを二つ目のキーワードの末尾に置く。それ以外の場合は、二つ目のキーワードの先頭に置く。

2つの作成したキー文字列を、読み順で2つの5×5の正方形に配置する。三つ目のキーワード(A1Z26)の各英字のアルファベットの位置を求め、10で割った余りを求めておく。

ステップ2から得られた文字の中に「J」があれば、同じ位置にある1ページ目の真ん中のディスプレーに表示されている英字に変える。このステップが完了したら、その英字を「J」に戻すこと。

一つ目の正方形から始め、その後は2つの正方形を交互に切り替えつつ、先ほど得た各英字と数字を取得し、領域移動用の図を用いて、以下の手順を行う。

  1. ステップ2の単語を取得し、保持している正方形からX番目の英字を探す。
  2. 得られた英字が正方形の中心にある場合、その英字を修正しない。そうでない場合は、その英字がある位置から時計回りにY回移動する。Yは3つ目のキーワードから取得したX番目の数字である。
    これでX番目の復号された英字が得られる。
すべての移動は、開始した英字と同じ領域内で行わなければならない。移動するときに領域を変えてはならない!
例:図の緑から青、青から赤、その逆などに進んではならない。

例:双四角回転暗号

ページ4の上のディスプレー:DEVOTION

ページ4の真ん中のディスプレー:BUB

ページ4の下のディスプレー:HASSLE

暗号化された単語:MDYYCX

作成した正方形

ABCFG
HKLMP
QRSUW
XYZDE
VOTIN
BUACD
EFGHI
KLMNO
PQRST
VWXYZ

下のディスプレーの各英字をアルファベット上の位置の数字にし、10で割る:8, 1, 9, 9, 2, 5

M, CW 8 -> M

D, CW 1 -> I

Y, CW 9 -> R

Y, CW 9 -> A

C, CW 2 -> G

X, CW 5 -> E

復号された単語:MIRAGE

ステップ4:色による暗号化 & 送信

復号された単語を取得後、各英字をアルファベットの位置に変換し、4で割った余りに2を加えた後、シーケンス全体を反転させる。

復号された単語中の各英字について、アルファベット上の位置の数字を、シーケンスの同じ位置に対応する数字を基数として先頭にゼロをつけずに変換する。得られた数列の各桁を、以下の表を使って色に変換する。

0
1
2
3
4薄緑

それが送信する回答である。

下の真ん中にあるボタンをクリックすると、モジュールは送信モードになり、色を入力することができる。メインウインドウに戻りたい場合は、ウインドウ右上のXボタンをクリックする。

入力中に間違いがあった場合は、バックスペース(左矢印)ボタンをクリックして直前の入力を削除することができる。回答を入力できたら、SUBMITをクリックして送信する。

入力が正しければモジュールは解除され。そうでなければ、モジュールにはミスが記録され、入力はリセットし、メインウィンドウに戻される。メインウィンドウから得られる情報がリセットされることはない。