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平台上运行此程序时结果不正确。 有没有办法在执行时间内比较任何两个算法加密。 是否需要解密算法比加密算法需要很长时间? 请任何建议。
答案 0 :(得分:1)
首先,您的加密和解密方法显然不适用于任何严重的安全措施。
加密方法似乎也包含随机BigInteger的生成。通常,您只会在生成密钥对时执行此操作(然后您将生成素数,而不是任何随机整数,至少对于RSA算法而言)。那么这是什么样的加密/解密方法超出了我的范围。
此外,Java VM需要很长时间才能进行优化。所以基本上你最好使用大量的测试轮次,然后将经过的时间除以轮数。
您当前的输出很大程度上取决于随机数生成器的状态。如果熵耗尽,则需要很长时间才能生成新数字。