关于java:计算经过的时间如何加密和解密算法?

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要花很长时间才能优化。所以基本上,你最好使用非常多的测试轮,然后将经过的时间除以轮数。

你的电流输出很大程度上取决于随机数发生器的状态。如果熵被耗尽,产生新的数字需要很长的时间。