ヴィジュネル暗号 を 数式で観る

2010年 03月 21日

    ヴィジュネル暗号を数学的に見てみる。
    Vigenere cipher

    平文   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
    鍵↓
     0 A...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
     1 B...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 A
     2 C...C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
     3 D...D 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
     4 E...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
     5 F...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 E
     6 G...G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
     7 H...H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
     8 I...I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
     9 J...J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
    10 K...K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
    11 L...L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
    12 M...M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
    13 N...N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
    14 O...O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
    15 P...P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
    16 Q...Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
    17 R...R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
    18 S...S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
    19 T...T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
    20 U...U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
    21 V...V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
    22 W...W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
    23 X...X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
    24 Y...Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
    25 Z...Z 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
    

    上記の並び順を見て見ると、全26文字に0~25までの番号が振ってある。
    ここで数字をNとしたとき、26文字なので26で割った余りで表すことができる。
    (N mod26) (N=数字)
    上の式に当てはめてみると、それぞれに対応した数字とアルファベットを得ることができる。

    • ここで鍵 “B” の Im boy でやってみると JN CPZ となり、1文字目 I を見てみると
      1. 平文(l) = 8
      2. 鍵B(アルファベットのシフト数) = 1
      3. 暗号文(J) = 平文 + 鍵 = 8 + 1, 9(mod26) = 9 % 26 = 9
    • 同じく鍵 “Z” の Im boy でやってみると HL ANX となり、1文字目 I を見てみると
      1. 平文(l) = 8
      2. 鍵Z(アルファベットのシフト数) = 25
      3. 暗号文(H) = 平文 + 鍵 = 8 + 25, 33(mod26) = 33 % 26 = 7

    2つの結果を、下の表の暗号配列に照らし合わせると暗号文字と一致する。

    暗号配列

    数字 (N)・・・0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    暗号配列・・・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
    

    また、復号化は暗号化の逆をすれば良い。

    • 例として上と同じ
      鍵 “B” の JN CPZ でやってみると Im boy となり、1文字目 I を見てみると
      1. 暗号文(J) = 9
      2. 鍵B(アルファベットのシフト数) = 1
      3. 平文(I) = 平文 -- 鍵 = 9 -- 1, 8(mod26) = 8 % 26 = 8
    • ここで、平文 -- 鍵になる場合
      同じく鍵 “Z” の HL ANX でやってみると Im boy となり、1文字目 I を見てみると
      1. 暗号文(H) = 7
      2. 鍵Z(アルファベットのシフト数) = 25
      3. 平文(I) = 平文 -- 鍵 = 7 -- 25 = -18 + 26, 8(mod26) = 8 % 26 = 8

      のように26を加えるとよい。

    このようにしてみると、ヴィジュネル暗号も高々26文字の換字式暗号でしか無いことが解る。

    ★☆★☆★☆ ナウでヤングなレンタルサーバー!ロリポップ! ☆★☆★☆★
    月額105円~容量最大30GB!WordpressやMovable Typeの簡単インストール付★
    1. 2 トラックバック(s)

    2. ガチムキ覚書 » Blog Archive » 暗号解読に必要な計算量
    3. ガチムキ覚書 » Blog Archive » ヴィジュネル暗号 を PHPで書く

    Post a Comment