使用C或C++,在将文件解密到磁盘后 - 如果应用程序崩溃或系统关闭且无法正常清理,我如何保证将其删除?在Windows和Linux上使用C或C++?
不幸的是,没有100%万无一失的方法来确保在系统崩溃的情况下删除该文件.想想如果用户只是在文件在磁盘上时拔出插头会发生什么.没有任何异常处理可以保护您免受那种(最坏的)情况的影响.
您可以做的最好的事情是不首先将解密的文件写入磁盘.如果文件以加密和解密形式存在,那么这就是安全性方面的弱点.
您可以做的第二件事是使用Brian的结构化异常处理建议,以确保临时文件得到清理.这不会保护您免受所有可能性的影响,但它会有很长的路要走.
最后,我建议您在启动应用程序时检查临时解密文件.这将允许您在应用程序完成系统崩溃后进行清理.将这些文件放在任何时间都不是理想的,但至少这会让你尽快摆脱它们.
根本不要将解密的文件写入磁盘.
如果关闭系统,则文件仍在磁盘上,可以访问磁盘,从而访问文件.
例外情况是使用加密文件系统,但这不受您的程序控制.