Hi,
I use openssl RSA encrypt and decrypt both on windows 2003 and solaris
(amd64 and sparc T2000). I wrote some performance test code like
gettimeofday(&tpsbegin, NULL);
for (i = 0; i < 100; i++)
{
r = RSA_public_encrypt(245, plain_data, enc_data, key,
RSA_PKCS1_PADDING);
if (r <= 0)
{
err = ERR_peek_last_error();
printf("encrypt error %s\n", ERR_reason_error_string(err));
break;
}
r = RSA_private_decrypt(r, enc_data, dec_data, key,
RSA_PKCS1_PADDING);
if (r <= 0)
{
err = ERR_peek_last_error();
printf("decrypt error %s\n", ERR_reason_error_string(err));
break;
}
}
gettimeofday(&tpsend, NULL);
interval = (tpsend.tv_sec - tpsbegin.tv_sec) * 1000000;
interval += tpsend.tv_usec;
interval -= tpsbegin.tv_usec;
interval = interval / 1000;
printf("RSA enc and dec %d times %d\n", i, interval);
At first, I ran the code on windows, 100 times RSA encryption and decryption
wasted 1500ms, then I ran the code on Solaris (sparc t2000), it wast
8000ms.
I googled that why Solaris RSA enc and dec is so slow and found that the
pkcs11 engine should be use to improve Solaris RSA performance.
I did use the pkcs11 engine
e = ENGINE_by_id("pkcs11");
if (e != NULL)
{
if (ENGINE_init(e) == 0)
{
printf("engine init failed\n");
}
if (ENGINE_set_default_RSA(e) == 0)//, ENGINE_METHOD_ALL) == 0)
{
printf("set engine failed\n");
}
ENGINE_finish(e);
ENGINE_free(e);
}
else
{
printf("finding engine failed\n");
}
Solaris (sparc t2000) 100 times RSA encryption and decryption wasted only
600ms, I also test the code on Solaris (amd64 3800+ dual core), 100 times
RSA encryption and decryption wasted about 700ms, the pkcs11 engine
extremely improve the RSA performance.
And now, I have 2 questions,
First 1, Whether the pkcs11 engine affect the encryption result? I mean ff
I encrypt the plain data by pkcs11 engine, can I decrypt them normally
without pkcs11 engine?
Sencond 1, pkcs11 engine is amazing on Solaris, I want to know how can I
imporove windows (I did not found pkcs11 engine on windows) RSA dec and enc
performance to pkcs11 level?
Thank you for your help.