単純換字方式とは?
単純換字方式とは最も基本的で簡易な暗号方式の一つであり、平文で用いられる26個のアルファベットと暗号文で用いられるの26個のアルファベットをランダムに一対一対応させて暗号化していく方法である。
例を持ち出すのがわかりやすいので以下に紹介する。
例
アルファベットの対応テーブル
平文 | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
暗号文 | d | i | q | m | t | b | z | s | y | k | v | o | f | e | r | j | a | u | w | p | x | h | l | c | n | g |
上のテーブルに従って平文のアルファベットを換字していくと、以下のような暗号化が行われる。
平文 : get home
暗号文: ztp srft
鍵(カギ)について
暗号化された文章を平文に戻すには専用の_カギ_が必要になります。単純換字方式では、特別な場合を除いて、上記のようなアルファベット対応テーブルが_カギ_の役割を果たします。
しかし、この鍵は人間にとって非常に覚えづらいですよね。そこで人間にとって覚えやすい_カギフレーズ_というものを用いて_カギ_を作る方法があります。
_カギ_の作り方
_カギフレーズ_をvanity is my favorite sin
とする。この_カギフレーズ_から重複するアルファベットを削除すると、vanitysmfore
というアルファベット列ができる。
これに残りのアルファベットを付け足すとvanitysmforebcdghjklpquwxz
という26文字のアルファベット列ができるので、このアルファベット列をabcdefghijklmnopqrstuvwxyz
に対応させて暗号化すれば良い。
平文 : hello world
暗号文: qtttj xjkto
つまり、_カギフレーズ_と_カギ_を作成するこのアルゴリズムさえ分かっていれば、26組もあるアルファベットの1対1対応を覚えておく必要はなくなる。
シーザー暗号
ジュリアス・シーザーがガリア戦争で用いたことで知られる、シーザー暗号も単純換字暗号方式の一つです。
下のテーブルでは平文のアルファベットが4つ先のアルファベットに置き換えられて暗号文が作られる。(シーザーが実際に用いたのは3つ先のアルファベットに置き換えられる。)
平文 | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
暗号文 | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | a | b | c | d |
上のテーブルを用いて平文をシーザー暗号に暗号化してみると以下のようになる。
平文 : hello world
暗号文: lioos asvph
シーザー暗号の鍵(カギ)について
シーザー暗号においては、_カギ_は1~26の整数によって表すことができる。この整数はアルファベットのシフト回数(何個先のアルファベットに置き換えるか)を示していて、上の例では_カギ_は4である。1~26に限られるのは、27回のシフトが1回のシフトと同値であることから理解いただけると思います。