我正在为现有程序(普通c控制台应用程序)添加加密功能。 它需要很少的文件作为输入参数,我的任务是使这些文件(敏感数据)安全。
我现在所做的是首先加密文件(使用外部应用程序进行简单的XOR),然后将其解密回程序内,现有程序处理文件。然后,在一切成功之后,我将这些文件加密(所有内容都存储在本地硬盘上)。
但是,安全性存在漏洞,因为所有“打开”文件都存储在硬盘上。如果程序在中间某处失败,那么这些文件将不会被解密。
我的问题是现有程序将FILE
变量作为输入并直接使用这些文件。这不是我的程序,所以我无权修改它。
我需要的是将文件写入内存而不是硬盘。 我知道Linux中有一些库可以实现这一点,但是我在win中开发了它。
答案 0 :(得分:0)
FILE
数据类型用于获取指向要打开的文件的文件指针,因此您的FILE *
变量已经在内存中。如果你想要整个文件在内存中,那么你必须分配一个与文件大小相同的缓冲区,并在内存中读取整个文件。
在Stackoverflow上,您可以找到有关fread,fwrite,fseek等的更多示例。
编辑:
如果你想操作内存中的文件,但是使用现有的stdio.h
接口(fopen,fread,fwrite等),你需要一个ramdrive。 Here你可以在Windows上找到一些免费的驱动程序。请记住,您必须将文件移动到 ramdrive中来处理它们,并在完成后将它们移动到外部 ramdrive,否则您的所有更改都将丢失。