从web.config为ASP.NET MachineKey设置AES密码模式

时间:2017-01-20 15:20:29

标签: c# asp.net encryption-symmetric form-authentication machinekey

我尝试使用ASP.NET FormAuthentication进行网站身份验证。我在web.config中添加了machineKey元素,以便我可以选择用于身份验证的验证和解密算法。查看machineKey documentation,我发现我可以在这些算法之间进行选择以进行验证:

  

[SHA1 | MD5 | 3DES | AES | HMACSHA256 | HMACSHA384 | HMACSHA512 | ALG:algorithm_name]

我可以在这些算法之间进行选择以进行解密:

  

[自动| DES | 3DES | AES | ALG:algorithm_name]

我注意到当我尝试使用AES算法时(通过将machineKey元素中的验证和解密属性都设置为“AES”),我无法更改其密码模式(我假设它使用CBC作为默认值{{ 3}})。我想在这里使用具有不同密码模式的AES算法。因此,仅将属性值设置为“AES”并不能解决我的问题。 machineKey文档为alg:algorithm_name

说明了这一点
  

alg:algorithm_name指定ASP.NET使用自定义算法来加密和解密数据。必须在派生自SymmetricAlgorithm的类中定义加密算法。 ASP.NET调用SymmetricAlgorithm.Create方法并传入此处指定的算法名称。

阅读本文我假设可以在此处引用使用SymmetricAlgorithm.Create方法制作的自定义算法。从as the documentation says开始,我想这可以解决我的问题。

现在我的问题是我不知道如何将自定义算法(即AES,但使用其他密码模式,例如ECB模式)引用到web.config中的machineKey元素中。我试图找到其他文件,没有运气。有没有办法在web.config中设置machineKey元素的验证和解密属性,以便它使用我的自定义算法?或者有没有其他方法可以使用我的自定义算法进行FormAuthentication的验证和解密?

0 个答案:

没有答案