ページ

2011年1月24日月曜日

[code] RSA暗号の学習

このエントリーをはてなブックマークに追加

// 平文 (法を超えることは許されない、法と同値は許されない)
A1 = 7, A2 = 24

// 素数
Q = 3, P = 11

// 法
N = Q * P = 33

// 公開鍵
E = 3

//============================================
// 暗号化 :
// 公開鍵の整数分だけ計算を繰り返す
// (なぜ?32bitの領域を超えると困るので)
//============================================
B1 = ((A1 * A1) mod N) * A1 mod N = 13
B2 = ((A2 * A2) mod N) * A2 mod N = 30

//============================================
// 秘密鍵の生成 :
/============================================
D = (1 * (Q - 1) * (P - 1) + 1) / E = 7

OR

// N = {1, 3, 11, 33} この4つと互いに素な数値の個数を求める
// φ(N) = {1,2,4,5,7,8,10,13,14,16,17,
// 19,20,23,25,26,28,29,31,32}
// もしNが素数ならば φ(N) = N - 1
φ(N) = (Q - 1) * (P - 1) = 20
E * D ≡ 1 (mod 20)
D = 7

//===========================================
// 複合化
// 暗号鍵の整数分だけ計算を繰り返す
// (なぜ?32bitの領域を超えると困るので)
//===========================================
((((((B1 * B1) mod N) * B1 mod N) * B1 mod N) * B1 mod N) * B1 mod N) * B1 mod N = 7 = A1
((((((B2 * B2) mod N) * B2 mod N) * B2 mod N) * B2 mod N) * B2 mod N) * B2 mod N = 24 = A2


参考 :
サルにもわかるRSA暗号、
http://www.maitou.gr.jp/rsa/rsa01.php

暗号化アルゴリズム、
http://fussy.web.fc2.com/algo/algo9-3.htm

0 件のコメント:

コメントを投稿