- 257 名前: ◆QZaw55cn4c mailto:sage [2011/12/25(日) 04:08:27.33 ]
- >>239
RSA の実装は、www.amazon.co.jp/dp/4627847610/ を参照している。 この本では、Java のBigInteger のみを使い、剰余演算も組み込み関数を使わずに記述している。 余談だがこの本は章によってあたりはずれが激しすぎる。 >1.Bは秘密鍵・共通鍵を生成する(この時点で、このどちらの鍵もAは知らない) 鍵の元 p, q; p, q とも素数を生成。秘密鍵eと公開鍵dを生成。このとき、ed≡1(mod L), L = lcm(p - 1, q - 1)となるように e, d を設定する。 >2.BはAに公開鍵を送る(この時点でAはBが生成した公開鍵のみを知る) 公開鍵=(pq, e) >3.Aは共通鍵を生成する(この時点で、この鍵をBは知らない) ???????なんですか?共通鍵って? >4.Aは生成した共通鍵を使ってファイルを暗号化する オリジナルのメッセージを M, 暗号化されたメッセージを C としたとき、 C = M^e mod pq A は e も pq も知っている。が、d はしらない。 >5.AはBから受け取った公開鍵を使って3で生成した共通鍵を暗号化する >6.Aは暗号化されたファイルデータと暗号化された共通鍵をBに送る ???????なんですか?共通鍵って?M だけ送ればいいんでない? >7.Bは受け取った暗号化された共通鍵を秘密鍵を使って復号する(この時点で、Bは共通鍵をGET) M = C^d mod pq ・表に表れる数は、pq, e, C C から M を求めるには、d を知らなければならない。 d を知るためには、L = lcm(p - 1, q - 1) をしらなければならない。 L を知るためには、p, q を知らなければならない。しかし、pq から p, q を知るのは困難。 共通鍵がよくわからないのですけれども、p, q, e, d, L, を使って表現するとどんな数になる?あと、共通鍵の暗号化とは何?
|

|