我有一个奇怪的问题;我无法解密 cookie 值。我正在用机器 key 加密它:
网络配置:
<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);
}
据我所知,这与机器 key 有关,但我在应用程序中定义了这一部分,所以我不太明白问题出在哪里。
错误:
最佳答案
您的验证过程是 SHA1。
Hashing
不能被逆转(解密)回来。 (至少在可预见的 future )。如果您只需要加密和解密,则使用加密而不是 Hash
方法。 Hash
方法用于密码,因此您无法解密它们。
在 web
配置中将 validation
过程更改为 AES
。
<machineKey decryptionKey="9931B3DF5DAD70FC6696E7F882AC2F51E4D78A72E3A7A2D0" validationKey="3471B0113B1F47164560DAC7AC89694A548B707A332F2BFAF80CBC5F4536217B9B1124F11A13B4E5E02D9EB976205708D9CF2E96F55845B16C4B1EFD8CE1BFAC" validation="AES" decryption="AES" />
关于c# - Cookie解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35626251/