モジュール詳細:赤色ハフマン暗号
最も低効率な暗号は、そもそも実用的ではなかったのだ。
モジュールは、3つのディスプレー、キーボード、左右の矢印、及び「#/Y」の形式で現在のページを表示するボタン(送信ボタン)で構成されている。Yはページの総数である。
矢印を使用してページを移動することができる。最後のページと最初のページは、ループする。ページ数は単語生成に使用された二進数の長さによって変化する。平均ページ数は2ページである。
モジュールを解除するには、以下の3ステップに従って単語を復号する。復号された単語を取得したら、キーボードを使用して入力する。入力を開始すると、ディスプレーが空白になり、下のディスプレーに現在入力されている内容が表示される。
入力を消去するには、いずれかの矢印をクリックする。
入力に問題がなければ、「SUB」と書かれたボタンを押して、回答を送信する。
ミスが記録された場合、モジュールの最初のページに戻るが、暗号の再生成はされない。
ステップ1:二分探索
文字 | バイナリ | 文字 | バイナリ | 文字 | バイナリ | 文字 | バイナリ | 文字 | バイナリ | 文字 | バイナリ | 文字 | バイナリ | 文字 | バイナリ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | 0000 | B | 0001 | C | 0010 | D | 0011 | E | 0100 | F | 0101 | G | 0110 | H | 0111 |
I | 1000 | J | 1001 | K | 1010 | L | 1011 | M | 1100 | N | 1101 | O | 1110 | P | 1111 |
Q | 00 | R | 01 | S | 10 | T | 11 | U | 0 | V | 1 |
各ページには、元のメッセージの変換に使用される最大18個の文字が含まれている。ページの情報を読み順に使用し、一つの長い文字列を作成する。表示されたこれらの文字をバイナリの部品に変換し、一つの長いバイナリ文字列を作成する。これは、後の2ステップで使用する。
ステップ2:ハフマン木の構築
取得したバイナリ文字列を使用し、26個の葉を取得するまで、以下の手順を繰り返す。葉とは、ハフマン木の末端にある節のことである。各桁は左から右に一度だけ読み取られ、戻ることはない。
- 「0」と「1」の葉から開始する。
- バイナリの桁を、バイナリ文字列内の先頭にある一つの節に出会うまで読み続ける。
- その情報を部分的なバイナリ文字列として分離させ、バイナリ文字列から始まりそれぞれ「0」と「1」で終わるような2つの項目に変更する。分割の際、葉の順序は維持すること。
- 上記の2ステップを繰り返す。