[英]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.html或http://mentablog.soliveirajr.com/?s=benchmark
PS。 為什么需要自己實施RSA? 通常,在密碼學中,指導原則是-“除非您像Bruce Schenier那樣出色,否則除非是世界知名的密碼學家,否則請不要嘗試發明新的密碼算法,否則它們將很不安全。” 如果這是出於學習目的,那么一定要去做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.