IIS7和ASP.NETencryption系统的差异

我有一个我最近从IIS6(Windows 2003)(7 Classic Pipeline)移植到IIS7(Windows 2008)集成pipe道的应用程序。

我注意到的问题是当我们尝试在IIS7系统上login时,构build在IIS6系统上的密码哈希不再匹配。 但是,当我们在IIS7系统上重新生成散列时,它工作正常。

我在某个地方看到两个(2003/2008)和它们各自的IIS版本之间的encryption系统存在差异,但我找不到任何附加信息。

我在这里感到不知所措,我需要现有的哈希来处理新的系统,我似乎无法find一个起点。

如果有人知道任何资源可以帮助这个,或设置什么的,我会非常感激。

.NET中的许多encryption函数都依赖于machineKey,它可以存储在web.config或machine.config中。 如果您需要多个或其他IIS服务器来encryption/解密相同的共享数据,则必须将所有服务器configuration为使用相同的machineKey。

“如果使用成员身份特征,默认情况下,密码哈希会存储在成员数据库中,成员资格系统也支持encryption密码,如果selectencryption密码格式,则在encryption和解密数据时使用<machineKey>设置。
参考: http : //msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_membership

如果您已经指定了machineKey,那么默认的algorithm可能会有问题,这是.Net 4.0中的一个重大改变。 现在默认是SHA256; 您可能需要将其更改回machineKeyvalidation属性上的SHA1,并在成员资格部分指定hashAlgorithmType:

 <system.web> <membership defaultProvider="myMembership" hashAlgorithmType="SHA1"> ... </system.web> 

http://geekswithblogs.net/DavidHoerster/archive/2010/06/15/asp.net-membership-password-hash—-.net-3.5-to-.net-4.aspx
https://stackoverflow.com/questions/3438197/hashing-no-longer-works-in-net-4-0-despite-msdn-workarounds
http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770148