假设您有一个在硬盘驱动器上存储消息、地址等的邮件客户端。这些消息位于加密文件中,但当您登录时,它们会被解密,因此您可以访问其中的数据。
当您注销时,这些文件应再次加密。如果成功退出程序,这很容易做到,但是如果有人将计算机断电或程序崩溃,则不会执行加密指令。
有针对这个的解决方法吗?如果您有任何特定于语言的方法来克服这个问题,我正在使用 Java。
假设您有一个在硬盘驱动器上存储消息、地址等的邮件客户端。这些消息位于加密文件中,但当您登录时,它们会被解密,因此您可以访问其中的数据。
当您注销时,这些文件应再次加密。如果成功退出程序,这很容易做到,但是如果有人将计算机断电或程序崩溃,则不会执行加密指令。
有针对这个的解决方法吗?如果您有任何特定于语言的方法来克服这个问题,我正在使用 Java。
如果消息没有被提取/保存到磁盘,那么你没有问题。这真的是它应该被处理的方式——全部在内存中,对于这种情况
简单:不要存储解密的数据。如果只是为了能够显示数据,那么我认为没有理由解密到磁盘然后在退出时重新加密。最好将其加密在磁盘上,在内存中解密(按需),然后当进程终止时,一切都很好。
您仍然可能需要担心在加载数据时进程的内存被不恰当地访问,但这是一个更难的攻击向量 - 如果这成为一个问题,您可能已经陷入了一些痛苦。
解决方案是永远不要存储未加密的文件。
与其解密磁盘并将其读入您的应用程序,不如将加密文件读入您的应用程序,然后在内存中解密。然后,当您断电时,您会丢失数据,就像您没有保存一样,但这就是您所期望的。