新月の開発

373f7f9b :Anonymous 2013-12-08 10:58
>>ba32298d
返信ありがとうございます。
C言語版apolloでは、1ループ毎にp+=2,q+=2していますね。
for(count = 0;count < RSACreateGiveup;count++,mpz_add_ui(p,p,2),mpz_add_ui(q,q,2)){
カウンタのチェックがおかしいのはC言語版由来のようです。
if(count != RSACreateGiveup) return 0;
上のようになっていますが、if(count != RSACreateGiveup-1) return 0;が正しいと思います。
(p,qを更新しないため)実質1回しか鍵を作っていないPython版と違い、300回試行するのだから問題はあまり無いのかもしれません。
そもそも問題というか、
key_dが0なら勿論鍵として使えませんし、0x7743^(ed)==0x7743(mod n)というのは、RSA暗号化・復号化を試してみるだけのテストですから、
ここでの判定がおかしくても署名や検証に失敗するだけです。Python版でも大した問題はないですね。
Powered by shinGETsu.