我有一个存储XML加密文档的应用程序,每次应用程序想要访问它必须的XML文件时(解密 - >读取 - >写 - >加密)。如果突然关闭或重启任务管理器中的结束任务,将导致XML中的数据损坏或未加密的XML文件,因此在下次运行时将产生错误。
我的目的是将XML的全部内容存储在数据库中,并检查是否有任何错误,然后替换旧内容。
非常感谢任何想法,提示或想法。
答案 0 :(得分:2)
你应该在内存中进行解密/加密。永远不要将未加密的数据存储在磁盘上。加载加密数据,将其解密到内存中。保存时,首先在内存中加密,然后存储。
即使在突然停机的情况下,以安全的方式替换文件的整个内容也很困难。解决方法是在临时名称下创建新文件,当它完全写入磁盘时,删除旧文件并重命名新文件。但是还有其他含义,例如特定于文件丢失的安全权限。
更好但更高级的选择是将所有内容移动到具有事务支持的数据库中。