我在使用简单的ProtectedData.Unprotect调用时遇到一些问题,这是我正在分享的代码,也许我在这里遗漏了一些东西。
public static byte[] SampleDecrypt(IEncrypted symmetricallyEncrypted, string base64DpapiLocalEncyrptedKey)
{
if (base64DpapiLocalEncryptedKey == null)
{
throw new ArgumentNullException("base64DpapiLocalEncryptedKey");
}
byte[] unprotectedKey =
ProtectedData.Unprotect(
base64DpapiLocalEncyrptedKey,
null,
DataProtectionScope.LocalMachine);
return unprotectedKey;
}
其中base64DpapiLocalEncyrptedKey是: “ABCCENCMnd8CFdERjHoAVV / PL + sMAAAA4q4wemrun5a67ohPku3cIAQCCCBAAAAKKKDZgAAqAAAABADDDCvGV5W6fCNcWbb9LPZp2U3AAAYYYSBBBCgDDDDEAAAANlpDcUbBvGqMyHXk8CPtUEoBBBBlB1TtMZRC05ASxGV1 / c3U548eVSPUO4X307ZDjRYytjNC35Di92q9RQAAACN // xNkexvIrGULI9GG9MdyS9Lee ==”
当我运行上面的内容时,它给出了“密钥无法在指定状态下使用”
非常感谢你们!
答案 0 :(得分:0)
我已经找到了问题所在。在我的情况下,DPAPI将加密密钥与您的机器配对(假设它使用机器范围加密),使用了localmachine范围。
认为它可以帮助那些有同样问题的人。尝试将钥匙放在不同的机器上以查看是否有效,而不是在另一台机器上验证您的钥匙是否错误。
我从不同的服务器创建了一个新密钥,并且能够使用它。