我正在加密和解密图片,因为它们包含敏感信息。
我在这里的斗争是我不能做标准Process.Start(saveImagePath);
,因为加密。
到目前为止,我的解决方案是只创建一个在PictureBox
中打开它的Windows窗体,因为它不需要路径,我可以这样做:
newImage = enc.Decrypt();
pictureBox1.Image =newImage;
但是尝试模拟Windows Photo Viewer一直很困难。
我的问题是,我可以在没有Windows照片查看器(或任何其他类似软件)的路径的情况下使用图像newImage = enc.Decrypt();
打开图像,还是我注定要尝试复制照片查看器程序?< / p>
答案 0 :(得分:1)
首先我要说的是,如果图像信息高度敏感,则无法将其显示给用户并确保其安全性为100%。即使使用内存流,也可以进行内存转储并访问敏感信息。这不是微不足道的,但是可行的。
现在已经不再使用,Windows进程无法直接访问彼此的内存,而无需通过像ReadProcessMemory
这样的特权调试API函数。这使Windows保持稳定和安全,但使您想要完成的任务变得不可行。你必须使用一个文件。
其他人建议将文件保存在Windows Temporary文件夹中。这比在你正在做的任何其他文件夹中保存它更安全。更安全的方法是创建一个RAM-Disk,将文件保存在那里,显示它们,然后删除RAM-Disk。
RAM-Disk是硬盘的内存模拟,您可以使用驱动器号以相同的方式访问它。创建然后删除RAM-Disk并不是一项简单的任务,它只提供更多的安全性,但您是唯一可以决定是否值得的人。用户仍然可以查看和访问RAM-Disk上的文件,但只能在删除之前访问。因此,它提供的唯一增加的安全性是减少用户可以直接访问文件的窗口。
在您自己的应用中打开图像就像您一样,仍然是最安全的方式,因为提取这些文件的唯一方法是进行内存转储,而且图像非常难(文字更容易)。如果您不想自己编写所有代码,可以搜索某个库。