好吧,我正在寻找一种使用RSA和AES加密/解密较大文件的方法。 我不太明白我需要做什么。如何使用RSA/AES加密/解密较大的文件
这种情况是我有更大的文件(从200kb - 50mb的任何地方)。我希望能够加密在当前目录中留下密钥(私钥)的特定文件以及加密文件。然后用户可以保存该密钥,随身携带并稍后再解密该文件。
我只是不太明白如何一起使用AES/RSA来实现这一点。我有一些代码来做简单的RSA加密/解密和一些工作的AES代码。我从其他SO问题中获得了此代码。
我在C++中使用Openssl。
当前AES程序:(来自网络)
int main() {
int bytes_read, bytes_written;
unsigned char indata[AES_BLOCK_SIZE];
unsigned char outdata[AES_BLOCK_SIZE];
/* ckey and ivec are the two 128-bits keys necesary to
en- and recrypt your data. Note that ckey can be
192 or 256 bits as well */
unsigned char ckey[] = "thiskeyisverybad";
unsigned char ivec[] = "dontusethisinput";
/* data structure that contains the key itself */
AES_KEY key;
/* set the encryption key */
AES_set_encrypt_key(ckey, 128, &key);
/* set where on the 128 bit encrypted block to begin encryption*/
int num = 0;
FILE *ifp = fopen("out.txt", "rb");
FILE *ofp = fopen("outORIG.txt", "wb");
while (true) {
bytes_read = fread(indata, 1, AES_BLOCK_SIZE, ifp);
AES_cfb128_encrypt(indata, outdata, bytes_read, &key, ivec, &num,
AES_DECRYPT); //or AES_DECRYPT
bytes_written = fwrite(outdata, 1, bytes_read, ofp);
if (bytes_read < AES_BLOCK_SIZE)
break;
}
问题要求我们推荐或找到一本书,工具,软件库,教程或其他非本地资源,因为它们倾向于吸引自以为是的答案和垃圾邮件,所以不适合堆栈溢出。相反,请描述问题以及到目前为止解决问题所做的工作。 –
解决了这个问题。 – Mohammad
此编辑不能解决问题。 _“我有一些代码可以做简单的RSA加密/解密和一些部分工作的AES代码(加密工作正常,但不能解密超过特定文件大小)。”_然后将代码显示为最小样本,并准确解释您遇到的问题编译器/运行时错误)。 –