我有一个.Net 1.1应用程序,必须升级到2.0。应用程序使用MD5CryptoServiceProvider对数据库中的密码进行加密。在我升级到2.0之后,MD5的值就不同了。在machine.config中,机器键被设置为自动生成。
有没有办法找回这个密钥?
发布于 2010-03-23 11:27:44
System.Security.Cryptography.MD5CryptoServiceProvider不依赖于ASP.NET system.web/machineKey设置。它们用于控制ViewState、表单身份验证票证和角色cookies (How To: Configure MachineKey in ASP.NET 2.0)的防篡改和加密。
我刚刚在.NET 1.1和2.0下编译了一个执行MD5散列的简单控制台应用程序,它们都产生相同的值。我在两台不同的机器上运行这些应用程序(一台使用自动生成的机器密钥,另一台使用硬编码的密钥),同样,结果相同。
这听起来使用的编码可能是不同的,即1.1版应用程序使用ASCIIEncoding,而2.0版应用程序使用Unicode。
另一件要检查的事情是,如果你使用的方法使用了你忘记的盐,那肯定会导致生成不同的散列。
发布于 2010-03-23 03:33:59
是的,您可以通过一点反射,see here for details and code :)
虽然,我不确定MD5CryptoServiceProvider实际上使用的是机器密钥,但我认为它是独立的,有人在评论中正确地告诉我了吗?
https://stackoverflow.com/questions/2495120
复制相似问题