恋愛短編集風にシーザー暗号の基礎を紹介します。
ブロックチェーンや暗号通貨の基礎に無理矢理繋げます
昔々ドイツの田舎にとある純真無垢な女の子がいました
ある日噂好きの友達から「好きな人は誰?」とメールで聞かれました純真無垢な女の子は「andy君」と答えたくてもそのメールが
お父さんに見られたら大変です。
女の子のお父さんのスマホチェックはとても厳しいからです。そこで純真無垢な女の子は[andy]という文字を暗号化して
噂好きの友達にメールしようと試みました。そして無事[andy]という文字を[DQGB]に変換する事ができ、
メールに暗号で「私の好きな人は[DQGB]君よ」と言いました。予め暗号解読のキーを知っている噂好きの友達は
すぐに[DQGB]から[andy]に変換する事ができました。これで純真無垢な女の子はお父さんにばれないように
好きな男の子の名前を噂好きの友達に伝える事ができました。
しかし、友達は噂話が大好きです。
翌日学校中にばらされてしまい大きな噂になりました。「これじゃあ暗号の意味がないじゃない…」
もはや純真無垢な女の子はショック過ぎて登校できなくなってしまいました。しかし、それを聞いたandy君は元々純真無垢な女の子を好きでした
結果オーライで2人は恋人となりドイツの田舎で幸せになったとさ。めでたしめでたし…
では本文に入ります。
andyという人名(アンディー君)を
暗号でDQGBになる仮定を紹介します。
andyというのは暗号化する前の文字なので「平文」と呼び
DQGBは暗号化された文字なので「暗号文」と呼びます
まずは暗号のベースとなるアルファベット一覧を作ります。
小文字アルファベットに数字1~26を割り当てていきます
(小文字アルファベット一覧の数字は赤にします)
a | b | c | d | ~ | w | x | y | z |
1 | 2 | 3 | 4 | ~ | 23 | 24 | 25 | 26 |
同じように大文字アルファベットにも数字1~26を割り当てる
(大文字アルファベット一覧の数字は青にします)
A | B | C | D | ~ | W | X | Y | Z |
1 | 2 | 3 | 4 | ~ | 23 | 24 | 25 | 26 |
そして
「小文字アルファベット一覧」の下段の数字に「3を足す」
(ポイントはwの26までいったら次のxは最初に戻って1になる)
a | b | c | d | ~ | w | x | y | z |
4 | 5 | 6 | 7 | ~ | 26 | 1 | 2 | 3 |
「小文字アルファベット一覧(3を足した)」と
「大文字アルファベット一覧(何も足していない)」を合体させてみます
すると以下のようになります。
a | b | c | d | ~ | w | x | y | z |
4 | 5 | 6 | 7 | ~ | 26 | 1 | 2 | 3 |
A | B | C | D | ~ | W | X | Y | Z |
1 | 2 | 3 | 4 | ~ | 23 | 24 | 25 | 26 |
上記の図の中から探してみてください
aは4
Dは4
となっておりますよね?
これはaとDいう小文字と大文字のアルファベットは
4という数字を基にして繋がっているという事です
分かり易くする為に
aに合わせて大文字アルファベット一覧をずらします
a | b | c | d | ~ | w | x | y | z |
4 | 5 | 6 | 7 | ~ | 26 | 1 | 2 | 3 |
D | E | F | G | ~ | Z | A | B | C |
4 | 5 | 6 | 7 | ~ | 26 | 1 | 2 | 3 |
こうしてみるとaとDいう小文字と大文字のアルファベットは
4という数字を基にして繋がっているという事がわかると思います
赤数字対応のアルファベット小文字は暗号化前の「平文」
青文字対応のアルファベット大文字は暗号化後の「暗号文」
bはE
cはF
dはG
wはZ
xはA
yはB
zはC
こんな風に一方のアルファベットに数字を割り当てて
もう一方のアルファベットにずらした数字を割り当てて
andyという平文の人名を暗号でDQGBになります。
つまり噂好きの友達は「3文字ずらしルール」というキーを
事前に知っていたので暗号を平文に変換する事ができたのです。
よくわかんねぇよ!という方、
それ間違ってねぇ?という方
いらっしゃいましたらコメント下さい