RSA方式による暗号/復号化の例
   
 1.平文
   暗号/復号化の対象とする平文は「あおもり」とする。
  先ずこれをJISコードで符号化し二進数で表わす。

    (ひらがな)      あ        お        も        り   
    (JISコード)    2422     242A       2462           246A
            (二進数)          00100010   00101010   01100010   01101010
                但し、JISコード中のひらがなを表わす上位1バイト「24」は省略した。                 
                

 2.暗号文
   暗号/復号化の計算を簡単にするため鍵長を3ビットとする。
  そうすると、暗号化対象の平文は次のような11ブロックに分割される。
        <平文>
    001┴000┴100┴010┴101┴001┴100┴010 ┴ 011┴010┴10△┴ 
    (1)   (0)     (4)     (2)    (5)    (1)     (4)    (2)       (3)    (2)     (4) → (M)
  ここで、△はブロック長を一定にするために挿入したスペースである。
  鍵長3ビットの場合、各ブロックの数値は0〜7でありこれを一義的に表示するためには
  8(2の3乗)進数以上を使用しなければならない。
  従って、公開鍵 Nは8(mod8)以上でなければならない。
  二つの素数 p,qを任意に p=3,q=5 とする。 N=pq=3x5=15>8

      次に或数 eを適当に定め e=3とする。
  オイラー関数  φ(N)=(p-1)(q-1)=2x4=8 となるから、mod8において eの逆数 d,
                          d=3    ∵ed=3x3=8+1=1 (mod8)を求める。
  上記結果から公開される数は N=15, e=3 及び鍵長 3ビット となる。
  ここで、暗号文は modN(N=15) の数値0〜14で表示されるので、そのプロック長は
  4ビットになる。
                         e
  暗号化計算式 C=M (modN) により上記平文 Mの暗号化を行う。
  これは、各ブロックの値 Mを三乗し次のようになる。 
     (1)→1(mod15)=1,    (0)→0(mod15)=0,       (4)→64(mod15)=4,
           (2)→8(mod15)=8,    (5)→125(mod15)=5,   (1)→1(mod15)=1,
           (4)→64(mod15)=4,  (2)→8(mod15)=8,       (3)→27(mod15)=12,
               (2)→8(mod15)=8,    (4)→64(mod15)=4,
        <暗号文>
  0001┴0000┴0100┴1000┴0101┴0001┴0100┴1000┴1100┴1000┴0100┴ 
 (1)     (0)       (4)      (8)      (5)       (1)       (4)       (8)     (12)     (8)      (4) → (C)


 3.復号文
                         d
  復号化計算式 M=C (modN) により上記暗号文 Cの復号化を行う。
  これは、各ブロックの値 Mを三乗し次のようになる。 
     (1)→1(mod15)=1,        (0)→0(mod15)=0,       (4)→64(mod15)=4,
           (8)→512(mod15)=2,    (5)→125(mod15)=5,   (1)→1(mod15)=1,
           (4)→64(mod15)=4,      (8)→512(mod15)=2,   (12)→1728(mod15)=3,
               (8)→512(mod15)=2,    (4)→64(mod15)=4,
        <復号文>
    001┴000┴100┴010┴101┴001┴100┴010┴011┴010┴100┴
           (1)    (0)     (4)    (2)     (5)    (1)     (4)    (2)     (3)    (2)     (4) → (M)
  本復号文と2.項の平文を比較すれば、復号化が正しく行われたことが分かる。


 4.結果の検討
  (1)RSA方式による暗号/復号化の例を上記の如く示した。
     ここでは、計算を簡単にし暗号/復号化の手順を分かり易くするため鍵長を極端に
     短く3ビットにした。実際には、鍵長が長い程解読が難しくなるが、反面処理時間
     を要するため用途に適した鍵長が選択されている。例えば、MS社のInternet
               Explorer 4.xでは 512-768-1024 ビットが使用されている。
    (数学的にはNの素因数分解(p,q)が困難な値、10進数でN>160桁が用いられる)
  (2)本例では公開される数は N=15, e=3 及び鍵長 3ビット である。
     しかし、その他にもN進数を表現できる最小ビット数を暗号文のブロック長とする、
     或いは最終ブロックに余白が生じた場合の処置方法、平文の使用コード等、別途取
     り決めが必要である。
  (3)復号化計算式における検算例
                           3      3x3   8+1
                          M=12 =(3)     =3   (mod8)=3  ;検算終り
          これは、一般的に次式で表わせる。
                                d      ed
                          M=C =(M)    =M     ∵ ed=1  at modφ(N)
         


 5.参考 
     (1) RSA;発明者三人、Rivest,Shamir,Adlemanの頭文字を連ねたもの。
     (2) 参考文献
    辻井重男著:暗号、ポストモダンの情報セキュリティ;講談社選書メチエ73,'99.4,P201〜209
    菅野他3著:ネットワークセキュリティと暗号化;カットシステム,'98.11,P54〜79
     (3)m0d N;N進数のこと。16進数の例では0から15までの数しかなく、16は0に戻る
    整数の世界である。詳しくは前記参考文献等を参照のこと。
   
                                        以上