Cookie解密

时间:2016-02-25 11:40:30

标签: c# asp.net-mvc cookies encryption

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

网络配置:

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

加密:

   private string Protect(string text, string purpose)
    {
        if (string.IsNullOrEmpty(text))
            return null;

        byte[] stream = Encoding.UTF8.GetBytes(text);
        byte[] encodedValue = MachineKey.Protect(stream, purpose);
        return Convert.ToBase64String(encodedValue);
    }

解密:

 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);
    }

从我读到的内容与机器密钥相关,但我在应用程序中定义了这一部分,所以我真的不明白问题出在哪里。

错误:

enter image description here

1 个答案:

答案 0 :(得分:3)

您的验证过程是SHA1。

Hashing无法撤回(解密)回来。 (至少在可预见的未来)。如果您只需加密和解密,则使用加密而不是Hash方法。 Hash方法用于密码,因此您不会将其解密。

validation config中为您的machinekey代码更改AES进程为web

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