0

我正在向现有程序(纯 c 控制台应用程序)添加加密功能。它需要很少的文件作为输入参数,我的任务是确保这些文件(敏感数据)的安全。

我现在要做的是首先加密文件(与外部应用程序进行简单的异或运算),然后在程序内部将它们解密,现有程序处理文件。然后,在一切成功后,我将这些文件加密回来(所有内容都存储在本地硬盘上)。

但是,安全性存在漏洞,因为所有“打开”的文件都存储在硬盘上。如果程序在中间某处失败,这些文件将不会被解密回来。

我的问题是现有程序将FILE变量作为输入并直接使用这些文件。这不是我的程序,所以我无权修改它。

我需要的是将文件写入内存而不是硬盘。我知道 Linux 中有一些库可以实现这一点,但我是在 win 中开发的。

4

1 回答 1

0

FILE数据类型用于获取指向正在打开的文件的文件指针,因此您的变量FILE *已经在内存中。如果要将整个文件放在内存中,则必须分配一个与文件大小相同的缓冲区并读取内存中的整个文件。

在 Stackoverflow 上,您可以找到更多关于freadfwritefseek等的示例。

编辑:

如果您想操作内存中的文件,但使用现有stdio.h接口(fopen、fread、fwrite 等),则需要 ramdrive。在这里,您可以找到一些免费的驱动程序来使其在 Windows 上运行。请记住,您必须将文件移到ramdrive才能处理它们,并在完成后将它们移到ramdrive,否则您的所有更改都将丢失。

于 2012-09-05T07:58:59.810 回答