计算经过的时间如何加密和解密算法?

时间:2013-02-09 23:14:20

标签: java performance cryptography

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平台上运行此程序时结果不正确。 有没有办法在执行时间内比较任何两个算法加密。 是否需要解密算法比加密算法需要很长时间? 请任何建议。

1 个答案:

答案 0 :(得分:1)

首先,您的加密和解密方法显然不适用于任何严重的安全措施。

加密方法似乎也包含随机BigInteger的生成。通常,您只会在生成密钥对时执行此操作(然后您将生成素数,而不是任何随机整数,至少对于RSA算法而言)。那么这是什么样的加密/解密方法超出了我的范围。

此外,Java VM需要很长时间才能进行优化。所以基本上你最好使用大量的测试轮次,然后将经过的时间除以轮数。

您当前的输出很大程度上取决于随机数生成器的状态。如果熵耗尽,则需要很长时间才能生成新数字。