如何使用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>