我要去做實現RSA加密。我想知道。在RSA加密中加密速度比解密快多少倍。我嘗試使用System.currentTimeMillis()來計算java中的已用時間。但給我時間加密= 0.05毫秒,而時間解密0.55毫秒意味着從那個1:11。我認爲這個結果是不理智的我的代碼是後續在RSA密碼學中加密時間是否小於解密時間?
//here my key has 256 bits
for (;;) {
long begin = System.currentTimeMillis();
for (int i = 0; i < num; i++) {
decrypt();
}
long end = System.currentTimeMillis();
long time = end - begin;
if (time >= 10000) {
System.out.printf("Average Encryption takes: %.2f ms\n",
(double) time/num);
break;
}
num *= 2;
}
p = BigInteger.probablePrime(128, random);
q = BigInteger.probablePrime(128, random);
N = (p.subtract(one)).multiply(q.subtract(one));
e = BigInteger.probablePrime(32, random);
d = e.modInverse(N);
private void encrypt()
{
C= M.modPow(e,N);
}
private void decrypt()
{
RM = C.modPow(d, N);
}
請這些結果
任何解釋
「num」的值是什麼? – David 2013-02-18 16:55:25
[爲什麼RSA解密過程需要比加密過程更長的時間?](http://stackoverflow.com/questions/2316241/why-rsa-decryption-process-takes-longer-time-than-the-encryption -process) – osgx 2013-02-19 01:15:56
根據'e'和'n'的選擇,加密的解密速度可能是解密速度的20到500倍。在你的情況下,他們比正常尺寸更接近你選擇了一個相當大的'e'和一個小'n'。 – CodesInChaos 2013-04-28 18:15:11