How compute elapsed time encrypt and decrypt algorithm?
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | for (int ii = 0 ; ii < 200 ; ii++) { encrypt(); } long start = System.currentTimeMillis(); for (int ii = 0 ; ii < 2000 ; ii++) { encrypt(); } long elapsed = System.currentTimeMillis() - start; for (int ii = 0 ; ii < 200 ; ii++) { decrypt(); } long start = System.currentTimeMillis(); for (int ii = 0 ; ii < 2000 ; ii++) { decrypt(); } long elapsed = System.currentTimeMillis() - start; private void encrypt() { M = new BigInteger(64,random); C = M.multiply(k).mod(N); } private void decrypt() { kk= k.modinverse(N); Mp = kk.multiply(c).mod(N); } |
但是我觉得在NetBeans平台上运行这个程序的结果是不正确的。有没有办法比较任何两种算法在执行时间下的密码学?必要的解密算法比加密算法耗时长吗?有什么建议吗?
首先,对于任何严重的安全性,您的加密和解密方法显然都不正确。
加密方法似乎还包含随机大整数的生成。通常,只有在生成密钥对时才会这样做(然后至少对于RSA算法,您将生成一个素数,而不是任何随机整数)。那么,这是一种什么样的加密/解密方法,我无法理解。
此外,Java VM要花很长时间才能优化。所以基本上,你最好使用非常多的测试轮,然后将经过的时间除以轮数。
你的电流输出很大程度上取决于随机数发生器的状态。如果熵被耗尽,产生新的数字需要很长的时间。