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

バラは赤い。スミレは青い。そして藍色暗号はここにあり、あなたは絶望している。

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

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

ページ1には、上のディスプレーに6文字の暗号化された単語、真ん中のディスプレーに暗号化された鍵、下のディスプレーに単語が表示される。

ページ2には、上と真ん中のディスプレーに6桁の二進数、下のディスプレーに論理演算子が表示される。

以下のルールに従って単語を解読する。

ステップ1:分割モールス暗号

ページ1にある下のディスプレーの単語(キーワード)を取得し、以下のルールを使用して鍵に変換する。

  • キーワードから重複する英字を削除する(最初に出現している英字はそのままにする)。
  • アルファベット全体の文字列を取得し、キーワードに出現する英字を削除する。
  • ポートの数が奇数の場合、キーワードの末尾にアルファベットの文字列を配置する。
  • そうでない場合、キーワードの先頭にアルファベットの文字列を配置する。

以下の文字列を下に配置して、鍵を獲得する。

.........---------xxxxxxxx
...---xxx...---xxx...---xx
.-x.-x.-x.-x.-x.-x.-x.-x.-

ページ1の真ん中のディスプレーから暗号化された鍵を取得し、各文字に対して、その文字が含まれる列を上から下に読み3つの記号に変換する。

変換した記号の文字列を左から右に読み、モールス信号に変換する。Xは文字間の空白を示す。

モールス信号表

全て完了したら、英単語にはならない6文字の論理鍵を手に入れられる。これはステップ3の論理暗号で使用する。

Example

下のディスプレー:WALLET ポートの数:偶数
真ん中のディスプレー:BIFXDPSHMK
鍵:BCDFGHIJKMNOPQRSUVXYZWALET

BCDFGHIJKMNOPQRSUVXYZWALET
.........---------xxxxxxxx
...---xxx...---xxx...---xx
.-x.-x.-x.-x.-x.-x.-x.-x.-
BIFXDPSHMK
...x.--.-.
.x-..-x-.x
....x..x.x

. . . . x . . - . x . . . . x - - . - x . . - x - . . . x x => HFHQUB

ステップ2:コンディ暗号

ここでは、ステップ1で作成した鍵とページ1にある上のディスプレーの6文字の暗号化された単語を使用する。

暗号化された鍵の下に、以下の2列を配置する。(ドット、ダッシュ、Xは今後使用しない)

00000000011111111112222222
12345678901234567890123456

上段の数字を十の位、下段の数字を一の位として扱う。

初期値は、シリアルナンバーの数字の合計を使用する。

ページ1の上のディスプレーにあった暗号化された単語の各文字に対して、以下のステップに従う。

  • 鍵の中からその文字を探す。
  • 現在の値の数だけ、左に移動する。
  • 到達した数字が新たな暗号化された文字である。
  • その文字と同じ列にある二桁の数字が、新たな値となる。

これで新しい暗号化された単語ができ、この暗号の最後のステップに進む準備ができているはずだ。

Example

暗号化された単語:UXKQAT
鍵:BCDFGHIJKMNOPQRSUVXYZWALET
初期値 = 25

BCDFGHIJKMNOPQRSUVXYZWALET
00000000011111111112222222
12345678901234567890123456

U - 25 => V, 18
X - 18 => B, 01
K - 01 => J, 08
Q - 08 => H, 06
A - 06 => U, 17
T - 17 => K, 09
新たな暗号化された単語:VBJHUK

ステップ3:論理暗号

ステップ1の論理鍵とステップ2の新しい暗号化された単語を手に入れたら、ついに最後のステップに入る。

このステップでは、まずどの論理ゲートを使うかを考える。2ページ目の下のディスプレーにある数字を6桁の2進数に変換する。 そして、ディスプレーの左にある数字の桁から左のビット、真ん中の数字の桁から右のビットを取得し、3番目の数字の桁が出力ビットとなる論理ゲートを、次の表から調べる。各桁同士を比較して、全ての演算が正しくなるような論理ゲートが今回使用する論理ゲートである。

左の
ビット
右の
ビット
ANDORXORNANDNORXNOR-><-
0000011111
0101110010
1001110001
1111000111

暗号がどのゲートを使っているかを把握したら、暗号化された単語と論理鍵、そして2ページ目の上のディスプレーと真ん中のディスプレーにある2つの6桁の二進数を使い、以下の手順を実行する。

  • 1:暗号化された単語の最初の文字をアルファベット上の位置から1を引いた数(A = 0, B = 1 ... Z = 25)に変換する。
  • 2:その数字を5桁の二進数にする。
  • 3:その文字と同じ位置にある上のディスプレーの二進数のビットが1の場合、手順2の二進数を反転させる。
  • 4:論理鍵に対しても上記の3ステップを行う。また、上のディスプレーではなく真ん中のディスプレーを使用する。
  • 5:2つの二進数の5ビットそれぞれについて、求めた論理演算を実行し結果のビットを取得する。最初に得た二進数を左のビット、2番目に得た二進数を右のビットとして扱う。
  • 6:結果の二進数を、対応する英字(0 = A, 1 = B ... 25 = Z)に変換する。
  • 7:これを暗号化された単語と論理鍵の各文字に対して行い、復号化された単語を獲得する。

暗号化された単語:VBJHUK
論理鍵:HFHQUB
上のディスプレー:11011
真ん中のディスプレー:000101

下のディスプレー:33 ? 60 = 34
33 = 100001, 60 = 111100, 34 = 100010
1 1 = 1,1 0 = 0,0 1 = 0,0 0 = 1 を満たす論理ゲートはXNOR

V, H => 21, 07 => 10101, 00111 + 1, 0 => 01010 XNOR 00111 => 10010 => 18 => S

B, F => 01, 05 => 00001, 00101 + 1, 0 => 11110 XNOR 00101 => 00100 => 04 => E

J, H => 09, 07 => 01001, 00111 + 0, 0 => 01001 XNOR 00111 => 10001 => 17 => R

H, Q => 07, 16 => 00111, 10000 + 1, 1 => 11000 XNOR 01111 => 01000 => 08 => I

U, U => 20, 20 => 10100, 10100 + 1, 0 => 01011 XNOR 10100 => 00000 => 00 => A

K, B => 10, 01 => 01010, 00001 + 0, 1 => 01010 XNOR 11110 => 01011 => 11 => L

復号化された単語:SERIAL

十進数から二進数への相互変換方法が分からない場合、ページ6とページ7にある表を参照する。この表には0から63の数字に対して、5桁表記及び6桁表記の二進数を示している。

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

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

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

数字六進数五進数
000000000000
100000100001
200001000010
300001100011
400010000100
500010100101
600011000110
700011100111
800100001000
900100101001
1000101001010
1100101101011
1200110001100
1300110101101
1400111001110
1500111101111
1601000010000
1701000110001
1801001010010
1901001110011
2001010010100
2101010110101
2201011010110
2301011110111
2401100011000
2501100111001
2601101011010
2701101111011
2801110011100
2901110111101
3001111011110
3101111111111
数字六進数
32100000
33100001
34100010
35100011
36100100
37100101
38100110
39100111
40101000
41101001
42101010
43101011
44101100
45101101
46101110
47101111
48110000
49110001
50110010
51110011
52110100
53110101
54110110
55110111
56111000
57111001
58111010
59111011
60111100
61111101
62111110
63111111