C# Cookie解密

C# Cookie解密,c#,asp.net-mvc,cookies,encryption,C#,Asp.net Mvc,Cookies,Encryption,我有一个奇怪的问题;我无法解密cookie值。我正在用机器密钥加密它: Web配置: <machineKey decryptionKey="9931B3DF5DAD70FC6696E7F882AC2F51E4D78A72E3A7A2D0" validationKey="3471B0113B1F47164560DAC7AC89694A548B707A332F2BFAF80CBC5F4536217B9B1124F11A13B4E5E02D9EB976205708D9CF2E96F55845

我有一个奇怪的问题;我无法解密cookie值。我正在用机器密钥加密它:

Web配置:

  <machineKey decryptionKey="9931B3DF5DAD70FC6696E7F882AC2F51E4D78A72E3A7A2D0" validationKey="3471B0113B1F47164560DAC7AC89694A548B707A332F2BFAF80CBC5F4536217B9B1124F11A13B4E5E02D9EB976205708D9CF2E96F55845B16C4B1EFD8CE1BFAC" validation="SHA1" decryption="AES" />
解密:

 private string Unprotect(string text, string purpose)
    {
        if (string.IsNullOrEmpty(text))
            return null;
        byte[] stream = Convert.FromBase64String(text);
        byte[] decodedValue = MachineKey.Unprotect(stream, purpose);  // Here i have error
        return Encoding.UTF8.GetString(decodedValue);
    }
从我读到的内容来看,这与机器密钥有关,但我在应用程序中定义了这一部分,所以我不太明白问题出在哪里

错误:


您的验证过程是SHA1

哈希
无法反向(解密)返回。(至少是为了一个可预见的未来)。如果您只需要加密和解密,那么使用加密而不是
散列
方法
Hash
方法用于密码,因此您不会将其解密回来

web
config中的machinekey标签的
验证过程更改为
AES

<machineKey decryptionKey="9931B3DF5DAD70FC6696E7F882AC2F51E4D78A72E3A7A2D0" validationKey="3471B0113B1F47164560DAC7AC89694A548B707A332F2BFAF80CBC5F4536217B9B1124F11A13B4E5E02D9EB976205708D9CF2E96F55845B16C4B1EFD8CE1BFAC" validation="AES" decryption="AES" />  

您是否尝试过清除cookie并重新测试?我以前在浏览器有旧cookie时也遇到过类似的问题
<machineKey decryptionKey="9931B3DF5DAD70FC6696E7F882AC2F51E4D78A72E3A7A2D0" validationKey="3471B0113B1F47164560DAC7AC89694A548B707A332F2BFAF80CBC5F4536217B9B1124F11A13B4E5E02D9EB976205708D9CF2E96F55845B16C4B1EFD8CE1BFAC" validation="AES" decryption="AES" />