我遇到一个问题,其中包含用户名和密码的文件可以在某些计算机上解密,但在另一台计算机上失败。
发生故障的机器是Windows 7嵌入式的全新安装。所有已安装的就是我的应用程序和.net Service Pack 4.6.2
我最初不是编写此代码的,但是我需要使它在Win 7嵌入式计算机上运行。
我看到的错误是:
UserManager错误:读取C:\ CutterBuild \ Data \ Config \ users.xml时出错:System.Security.Cryptography.CryptographicException:密钥在指定状态下无效。
相关代码为:
try
{
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(inputFilePath);
System.Security.Cryptography.CspParameters cspParams = new System.Security.Cryptography.CspParameters();
cspParams.KeyContainerName = KEY_CONTAINER_NAME;
// Next line is Where the code fails and throws exception!!!!.
System.Security.Cryptography.RSACryptoServiceProvider rsaKey = new System.Security.Cryptography.RSACryptoServiceProvider(cspParams);
EncryptionHelper.Decrypt(xmlDoc, rsaKey, KEY_NAME);
reader = new XmlNodeReader(xmlDoc);
collection = Read(reader, out errorMessage);
}
我进行了一些调试,直到rsa关键点一切都看起来不错。有关该错误的Microsoft文档没有帮助。
我对此进行了一些阅读,发现它令人困惑,它在文档中指出您需要创建安全证书,但是我找不到有关如何执行此操作的任何说明。并且不应该在一台计算机上创建并复制到其他计算机吗?它被复制到哪里?我在PC上找不到任何有关它的信息,但是解密在PC上运行正常。
有人能指出我正确的方向吗?