3
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平台上运行这个程序的结果是不正确的。有没有办法在执行时间下比较任何两种算法密码学。必要的解密算法是否比加密算法花费更长的时间?请任何建议。

4

1 回答 1

2

首先,您的加密和解密方法显然不适合任何严重的安全性。

加密方法似乎也包含随机 BigInteger 的生成。通常你只会在生成密钥对时这样做(然后你会生成一个素数,而不是任何随机整数,至少对于 RSA 算法)。所以这是一种什么样的加密/解密方法是我无法理解的。

此外,Java VM 的优化需要很长时间。所以基本上你最好使用非常多的测试轮数,然后将经过的时间除以轮数。

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

于 2013-02-10T13:21:01.087 回答