我正在测试使用.NET v4的System.Security.Cryptography.ProtectedData()和UnprotectData()方法,使用DataProtectionScope.LocalMachine范围来确保文件只能在单台机器上加密/解密。 这里是我所做的事情的一般想法...
//Encrypt
byte[] outBytes = ProtectedData.Protect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine);
File.WriteAllBytes(fileOut, outBytes);
//Decrypt
byte[] outBytes = ProtectedData.Unprotect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine);
File.WriteAllBytes(fileOut, outBytes);
我已经进行了大量的测试以确保在使用所列方法调用时获得预期的行为,而且似乎在同一台机器上的任何用户都可以加密/解密文件。
我的问题是:如果某人制作了一个包含使用此机制加密的文件的系统磁盘映像或克隆(使用Acronis、Ghost等),然后将该映像恢复到另一台计算机上会发生什么?(例如,IT部门预装了单个系统,然后成为具有相同硬件配置的许多计算机的基础映像)。重新安装操作系统后是否能够解密原始系统中加密的文件?我希望由于不同的硬件配置,解密将失败,但如果执行加密所需的所有必要信息都存在于注册表或文件系统中,那么它可能会起作用。
显然,我可以自己测试,但我现在确实没有资源这样做,并且一直在搜索是否有其他人已经知道答案。任何建议都将不胜感激!