• Skip to main content
  • Skip to primary sidebar

学習記録

暗号学

暗号の基礎を恋愛短編集風に語る

2018年4月19日 by 河副 太智 Leave a Comment

 

恋愛短編集風にシーザー暗号の基礎を紹介します。
ブロックチェーンや暗号通貨の基礎に無理矢理繋げます

昔々ドイツの田舎にとある純真無垢な女の子がいました
ある日噂好きの友達から「好きな人は誰?」とメールで聞かれました

純真無垢な女の子は「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文字ずらしルール」というキーを
事前に知っていたので暗号を平文に変換する事ができたのです。

 

よくわかんねぇよ!という方、
それ間違ってねぇ?という方
いらっしゃいましたらコメント下さい

Filed Under: 暗号学

Primary Sidebar

カテゴリー

  • AWS
  • Bootstrap
  • Dash
  • Django
  • flask
  • GIT(sourcetree)
  • Plotly/Dash
  • VPS
  • その他tool
  • ブログ
  • プログラミング
    • Bokeh
    • css
    • HoloViews
    • Jupyter
    • Numpy
    • Pandas
    • PosgreSQL
    • Python 基本
    • python3
      • webアプリ
    • python3解説
    • scikit-learn
    • scipy
    • vps
    • Wordpress
    • グラフ
    • コマンド
    • スクレイピング
    • チートシート
    • データクレンジング
    • ブロックチェーン
    • 作成実績
    • 時系列分析
    • 機械学習
      • 分析手法
      • 教師有り
    • 異常値検知
    • 自然言語処理
  • 一太郎
  • 数学
    • sympy
      • 対数関数(log)
      • 累乗根(n乗根)
    • 暗号学

Copyright © 2025 · Genesis Sample on Genesis Framework · WordPress · Log in