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