HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1029
TA少し数学的なこと (暗号化)5解決


TA

リンク

2012/10/29(Mon) 21:12:31|NO.50334

こんばんは。
今回は数学的なことになるのですが、質問させていただくことにしました。
よろしくお願いします。


http://www.maitou.gr.jp/rsa/rsa10.php さん
でやっているような暗号化と復号をやってみたくて、ソースを書いたのですがうまい具合にいきません。
どのように記述すればよいのでしょうか?
指導していただけたらと思います




#include "hspmath.as" // P*Qを法とする hira = 9 P = 4 Q = 12 n = 1 E = 4 a = fmod( pow( hira, E ), P*Q ) b = n*(P-1)*(Q-1)+1/E c = fmod( pow( a, b ), P*Q ) mes a //暗号化した値 mes b //何乗するかの値 mes c //元の数字、この場合 9




プログラミング方法についてというよりか、
数学式の書き方についての質問みたいですが、どうぞよろしくお願いします。



この記事に返信する


匿名希望

リンク

2012/10/29(Mon) 23:45:02|NO.50340

とりあえずざっと見ただけですが、問題点を

1.)PとQは、それぞれ素数でないといけない
2.)Eと(P-1)*(Q-1)は、互いに素でないといけない
3.)指数計算にPOWを使うと、すぐに桁あふれしてしまう

以下のサイトが参考になるかもしれません
(オリジナルにアクセスできなかったので転載サイトです)
http://deztec.jp/x/05/faireal/faireal-24-index.html



kanahiron

リンク

2012/10/30(Tue) 00:20:02|NO.50341

#include "hspmath.as"
moto = 7 P = 5 Q = 7 n = 1 ;((P-1)*(Q-1))とEは互いに素でなければいけない ;この場合((P-1)*(Q-1))=24なので、7で互いに素 E = 7 hou = (P*Q) mes moto r1 = fmod((int(pow(moto,E))),hou);暗号化 mes r1 D = int((n*(P-1)*(Q-1)+1)/E) mes D r2 = fmod((int(pow(r1,D))),hou);復号化 mes r2
匿名希望さんの仰っている通り、PやQがおおきいと簡単にオーバーフローします
何かしら別の処理を考えないとまともに使えませんね…



TA

リンク

2012/10/30(Tue) 20:15:52|NO.50358

>匿名希望 さん

あっ、忘れてました。
すいません、ありがとうございます。


P = 3 Q = 11 n = 1 E = 5

としてみましたが、できないです。
これはたぶん私の式が間違っているからだと思いますが。



>kanahiron さん

コピペさせていただいたのですが、
moto と r2 が同じになりません。
これはHSP上の問題なのでしょうか?




よろしくお願いします。



kanahiron

リンク

2012/11/2(Fri) 23:27:34|NO.50421

あ ごめんなさい めちゃくちゃ読み違いをしていました

moto と r2が同じにならないのはオーバーフローが原因だと思います
自分のソースの場合、moto>=16でオーバーフローを起こしr2がでたらめな数字になります



TA

リンク

2012/11/3(Sat) 22:23:47|NO.50457

>kanahiron さん

了解です。
どうもありがとうございました!!


>nir さん

そんなものもあるのですか
全く知りませんでした。
参考にさせていただきます。



みなさん回答ありがとうございました。
解決とさせていただきます!



ONION software Copyright 1997-2021(c) All rights reserved.