【发布时间】:2013-10-21 01:37:10
【问题描述】:
我编写了一个简单的测试程序来加密/解密消息。
我有一个keylength:
int keylength = 1024; // it can also be 2048, 4096
和最大输入长度:
int maxlen = (keylength/8)-11;
而且我知道我的输入大小应该小于 maxlen,如下所示:
if(insize >= maxlen)
printf("cannot encrypt/decrypt!\n");
我的问题很简单 - 是否有可能(如果是,我该怎么做)使用 RSA 消息进行加密/解密比 maxlen 更长?
主要代码也很简单,但只有在 insize 时才有效
if((encBytes=RSA_public_encrypt(strlen(buff1)+1, buff1, buff2, keypair, RSA_PKCS1_PADDING)) == -1)
{
printf("error\n");
}
if((decBytes=RSA_private_decrypt(encBytes, buff2, buff3, keypair, RSA_PKCS1_PADDING)) == -1)
{
printf("error\n");
}
【问题讨论】:
-
通常,您使用对称密码(AES 似乎是一种流行的选择)加密您的长消息并使用 RSA 加密 AES 密钥。
-
正如@JoachimIsaksson 指出的那样,您对应用密码学有一个根本的误解。与对称密钥解密相比,RSA 解密为extremely computationally expensive。
标签: c encryption cryptography openssl rsa