0

Javaで次の2つの関数を使用してRSAアルゴリズムを実装しようとしています:

time_one = 0    
private void encrypt()    
{   
    M = new BigInteger(64,random);   
    C = M.modPow(e,N);  
}  
time_encrypt = time_now-time_one  

time_two = 0   
private void decrypt()   
{   
    Mp = C.modPow(dp, p);   
    Mq = C.modPow(dq, q);   
    MM =    Mp.multiply(q).multiply(q.modInverse(p))).add(Mq.multiply(p).multiply(p.modInverse(q)))).mod(N);  
}  
time_decrypt = time_now-time_two

encrypt()データサイズが 1kb と 2kb から 10kb の場合の所要時間はどのように判断できますか? さまざまなサイズのデータ​​をどのように表現できますか?

実行時間を計算するその方法は、 と の実行時間を比較するのに適していencrypt()ますdecrypt()か?

4

1 に答える 1

0

JIT が開始されると、非常に異なる結果が表示されます。通常、測定せずに約 10 万回暗号化/復号化を使用して JVM をスピンアップする必要があります。これにより、JIT が起動し、必要な部分をネイティブ コードにコンパイルできるようになります。この後、System.nanoTime() を介してナノ秒単位で開始時間を取得することにより、ベンチマークを開始できます。この方法論を使用すると、少なくともコードのパフォーマンスに関する洞察が得られます。ただし、次のプレゼンテーションを確認することを強くお勧めします: http://www.azulsystems.com/presentations/art-of-Java-benchmarking

また、自分が何をしているかを知っている人がマイクロベンチマークを実行しているいくつかのブログもフォローしてください。たとえば、次のようなものがあります。

http://mechanical-sympathy.blogspot.co.uk/2011/09/adventures-with-atomiclong.html またはhttp://mentablog.soliveirajr.com/?s=benchmark

PS。RSA を自分で実装する必要があるのはなぜですか? 一般に、暗号化の指針となる原則は次のとおりです。それが学習目的である場合は、ぜひ行って実行してください。

于 2013-01-26T17:51:20.800 に答える