C# 如何更改嵌入式XP SP3中的主密钥过期?

C# 如何更改嵌入式XP SP3中的主密钥过期?,c#,c++,cryptography,C#,C++,Cryptography,背景:我们有运行嵌入式XP SP3、.NET Framework 3.5的设备,具有windows分区(c:)写保护。我们使用System.Security.Cryptography.ProtectedData加密和解密数据(使用DataProtectionScope.LocalMachine) 问题:大约3个月后,我们会收到间歇性的“System.Security.Cryptography.CryptographyException:密钥在指定状态下无效”。尝试解密值时会出现异常。加密的值存储

背景:我们有运行嵌入式XP SP3、.NET Framework 3.5的设备,具有windows分区(c:)写保护。我们使用System.Security.Cryptography.ProtectedData加密和解密数据(使用DataProtectionScope.LocalMachine)

问题:大约3个月后,我们会收到间歇性的“System.Security.Cryptography.CryptographyException:密钥在指定状态下无效”。尝试解密值时会出现异常。加密的值存储在启用写的驱动器上的文件中,并持续存在。经过1-3次加电循环后,该值将被解密

从阅读中可以看出,当我们启动时,主密钥可能会过期并续订。但是,当我们关闭电源并引发CryptographicException异常时,更新的主密钥可能会由于写保护驱动器而丢失。我知道LocalMachine范围不那么安全,但是,该系统的最终用户无权访问该设备的XP SP3嵌入式操作系统,也无法登录该设备

问题:

  • 如何以编程方式更新MasterKey并更改其过期日期
  • 在访问之前是否可以续订主密钥?如果可以,如何续订
  • 如果在模拟过程中使用这些方法,您可能会收到以下错误:“密钥在指定状态下无效”。出现这种情况是因为DPAPI将密钥数据存储在用户配置文件中。如果未加载配置文件,DPAPI将无法执行解密。是否使用用户配置文件模拟?我看到了你正在使用的加密API,但是你能链接到一些关于这个“主密钥”的信息吗?