我正在尝试使用 OTP 方法编写加密。为了与安全理论保持一致,我需要将纯文本文档仅存储在内存中,永远不要写入物理驱动器。 tmpnam 命令似乎是我所需要的,但据我所知,它将文件保存在磁盘上而不是 RAM 上。
使用 C++ 是否有任何(独立于平台的)方法允许文件仅存在于 RAM 中?如果可能,我想避免使用 RAM 磁盘方法。
谢谢
编辑: 谢谢,这对我来说更像是一个学习的东西,我是加密的新手,只是通过不同的方法工作,我实际上并不打算使用其中的许多方法(特别是 OTP,因为“垫”使原始文件大小加倍").
老实说,我是 Linux 用户,所以放弃 Windows 也不算太糟糕,我目前正在考虑使用 RAM 磁盘,因为 FUSE 对于“学习”来说似乎有点过分了。
最佳答案
简单的回答是:不,没有独立于平台的方法。即使只将数据保存在内存中,它仍然有被虚拟内存管理器换出到磁盘的风险。
在 Windows 上,您可以使用 VirtualLock() 强制内存保留在 RAM 中。您还可以使用 CryptProtectMemory() 来防止其他进程读取它。
在 POSIX 系统(例如 BSD、Linux)上,您可以使用 mlock()
将内存锁定在 RAM 中。
关于c++ - 仅存在于 RAM 中的临时文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/551595/