如何使用System.Web.Security.MachineKey.Unprotect解密不同服务器之间的密文
how to use System.Web.Security.MachineKey.Unprotect to decrypt ciphertext between different server
我的 asp.net 站点有两台服务器用于负载平衡。我发现如果认证cookie(.AspNet.Application)被服务器1加密了,那么服务器2是无法解密的,我已经把两台服务器的machiekey设置成相同的值了。此外,我发现 System.Web.Security.MachineKey.Unprotect 方法无法解密由具有相同机器密钥的另一台服务器加密的密文。但是,它在同一台服务器上运行良好。网站以前使用web form技术,现在使用web form+mvc合一方案。
我的加密代码片段如下:
var bytes = System.Web.Security.MachineKey.Protect(Encoding.UTF8.GetBytes("abcd1234"),
"M", "A", "v1");
this.textBox2.Text = Convert.ToBase64String(bytes);
解密代码片段如下:
var bytes = System.Web.Security.MachineKey.Unprotect(Convert.FromBase64String(this.textBox2.Text),
"M", "A", "v1");
this.textBox1.Text = Encoding.UTF8.GetString(bytes);
有人可以帮帮我吗?非常感谢!
你能把machinekey放在web.config里吗,比如
<system.web>
<compilation debug="true" targetFramework="4.6"/>
<httpRuntime targetFramework="4.6"/>
<machineKey
validationKey="your validationKey"
decryptionKey="your decryptionKey"
validation="SHA1"
decryption="AES"
/>
</system.web>
我的 asp.net 站点有两台服务器用于负载平衡。我发现如果认证cookie(.AspNet.Application)被服务器1加密了,那么服务器2是无法解密的,我已经把两台服务器的machiekey设置成相同的值了。此外,我发现 System.Web.Security.MachineKey.Unprotect 方法无法解密由具有相同机器密钥的另一台服务器加密的密文。但是,它在同一台服务器上运行良好。网站以前使用web form技术,现在使用web form+mvc合一方案。 我的加密代码片段如下:
var bytes = System.Web.Security.MachineKey.Protect(Encoding.UTF8.GetBytes("abcd1234"),
"M", "A", "v1");
this.textBox2.Text = Convert.ToBase64String(bytes);
解密代码片段如下:
var bytes = System.Web.Security.MachineKey.Unprotect(Convert.FromBase64String(this.textBox2.Text),
"M", "A", "v1");
this.textBox1.Text = Encoding.UTF8.GetString(bytes);
有人可以帮帮我吗?非常感谢!
你能把machinekey放在web.config里吗,比如
<system.web>
<compilation debug="true" targetFramework="4.6"/>
<httpRuntime targetFramework="4.6"/>
<machineKey
validationKey="your validationKey"
decryptionKey="your decryptionKey"
validation="SHA1"
decryption="AES"
/>
</system.web>