使用ProtectedData.Unprotect时,密钥无法在指定的状态错误中使用

时间:2015-02-02 20:43:53

标签: asp.net cryptography

我在使用简单的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 ==”

当我运行上面的内容时,它给出了“密钥无法在指定状态下使用”

非常感谢你们!

1 个答案:

答案 0 :(得分:0)

我已经找到了问题所在。在我的情况下,DPAPI将加密密钥与您的机器配对(假设它使用机器范围加密),使用了localmachine范围。

认为它可以帮助那些有同样问题的人。尝试将钥匙放在不同的机器上以查看是否有效,而不是在另一台机器上验证您的钥匙是否错误。

我从不同的服务器创建了一个新密钥,并且能够使用它。