检索ASP.Net自动生成的MachineKey

检索ASP.Net自动生成的MachineKey,asp.net,iis,Asp.net,Iis,我有一个.Net 1.1应用程序,必须升级到2.0。应用程序使用MD5CryptoServiceProvider加密数据库中的密码。升级到2.0后,MD5的值就不同了。在machine.config中,machinekey设置为autogenerate 有没有办法取回这把钥匙?是的,你可以稍微反省一下:) 虽然我不确定MD5CryptoServiceProvider是否实际使用了机器密钥,但我认为它是独立的,有人在评论中正确地告诉了我?不依赖ASP.NETsystem.web/machineK

我有一个.Net 1.1应用程序,必须升级到2.0。应用程序使用MD5CryptoServiceProvider加密数据库中的密码。升级到2.0后,MD5的值就不同了。在machine.config中,machinekey设置为autogenerate


有没有办法取回这把钥匙?

是的,你可以稍微反省一下:)

虽然我不确定
MD5CryptoServiceProvider
是否实际使用了机器密钥,但我认为它是独立的,有人在评论中正确地告诉了我?

不依赖ASP.NET
system.web/machineKey
设置。它们用于控制ViewState、表单身份验证票证和角色cookie()的防篡改和加密

我刚刚在.NET1.1和2.0下编译了一个简单的控制台应用程序,它执行MD5哈希,并且它们都产生相同的值。我在两台不同的机器上运行了这些应用程序(一台使用自动生成的机器密钥,另一台使用硬编码密钥),同样,结果相同

这听起来好像使用的编码可能不同,即1.1应用程序使用的是
ascienceoding
,2.0应用程序使用的是
Unicode


另一件需要检查的事情是,如果您使用的方法使用了您忘记的salt,那么肯定会生成不同的哈希。

当我将虚拟目录转换为2.0时,加密会中断。还有没有代码就可以得到这个吗?@Jared-我不知道,但是机器上的任何.Net应用程序都可以运行代码,例如一个小的控制台应用程序可以用来显示键。@Jared-打破注释框宽度的方法!你能给出结果改变的示例代码吗,AFAIK MD5不依赖于任何密钥,它是一个标准化的散列:但是…我对.Net中的加密提供程序不太熟悉(到目前为止对我来说还没有太多用处),所以它可能是某种变体,实际上不只是MD5散列。对此我很抱歉。这是密码。正如我之前所说,它是一个升级到2.0的1.1应用程序。var encryptionServiceProvider=new MD5CryptoServiceProvider();var bytes=ascienceoding.ASCII.GetBytes(inputString);var passwordHash=encryptionServiceProvider.ComputeHash(字节);你完全正确。AscienceODing类在2.0中的实现与在1.1中的实现不同。@Jared-yay!。。。你知道,如果你真的喜欢,你也可以投一个正确的答案:)