【发布时间】:2015-04-06 14:31:18
【问题描述】:
好的,所以我正在寻找一种使用 RSA 和 AES 加密/解密较大文件的方法。 我不太明白我需要做什么。
情况是我有更大的文件(从 200kb 到 50mb)。我希望能够加密在当前目录中留下密钥(私钥)的特定文件以及加密文件。然后,用户可以保存密钥,随身携带,稍后再回来解密文件。
我只是不太明白如何同时使用 AES/RSA 来实现这一点。我有一些代码来做简单的 RSA 加密/解密和一些工作 AES 代码。我从其他 SO 问题中获得了此代码。
我正在使用 Openssl 和 C++。
当前的 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;
}
【问题讨论】:
-
要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。
-
此修改无法解决问题。 “我有一些代码来进行简单的 RSA 加密/解密和一些部分工作的 AES 代码(加密工作正常,但无法解密超过特定文件大小)。” 然后将该代码显示为最小示例并准确解释你有什么问题(编译器/运行时错误)。
-
代码没有添加任何东西,我正在寻找其他人提出实现这一点的方法,这些人过去可能已经这样做过。但如果它对你来说意义重大,我会添加我所拥有的。
-
那么您的问题与第一条评论中提到的无关。或者甚至只是太宽泛(这是另一个离题的关闭原因)。
-
不,真的不是。唯一的问题是我要求我已修复的资源。