簡體   English   中英

如何計算算法的加密和解密運行時

[英]How to compute encrypt and decrypt runtime for algorithm

我正在嘗試使用以下兩個Java函數來實現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

如何確定數據大小為1kb和2kb至10 kb的crypto encrypt()時間? 如何代表不同大小的數據?

那種計算運行時間的方法對比較encrypt()decrypt()速度運行時間是否好?

啟動JIT后,您將看到截然不同的結果。通常,您應該做的是通過使用JVM加密大約100k次來啟動JVM,而無需對其進行計量。 這將允許JIT插入並將必要的部分編譯為本機代碼,之后,您可以通過System.nanoTime()以納秒為單位的開始時間來開始基准測試。 使用這種方法至少可以使您對代碼的性能有一些了解。 但是,我強烈建議您閱讀以下演示文稿: http : //www.azulsystems.com/presentations/art-of-java-benchmarking

並關注一些博客,這些博客中知道自己在做什么的人會執行微基准測試。 其中一些例如:

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

PS。 為什么需要自己實施RSA? 通常,在密碼學中,指導原則是-“除非您像Bruce Schenier那樣出色,否則除非是世界知名的密碼學家,否則請不要嘗試發明新的密碼算法,否則它們將很不安全。” 如果這是出於學習目的,那么一定要去做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM