纠正:HashPasswordForStoringInConfigFile中的Md5算法并非常用的Md5算法

本来我也以为System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile中的MD5和常用的一样

可今天一试,结果有很大不同,
比如test,HashPasswordForStoringInConfigFile编码成
C8059E2EC7419F590E79D7F1B774BFE6
而应该是098f6bcd4621d373cade4e832627b4f6

而且不同的机器不同的结果,有些结果正确
一看MSDN的解释,原来是
Given a password and a string identifying the hash type, this routine produces a hash password suitable for storing in a configuration file.

为了和以前的代码兼容和平台兼容,只好自己重新写了MD5的算法,利用System.Security.Cryptography.MD5CryptoServiceProvider
代码如下,大家执行一下就知道了,我就不多说了。

  1. <%@PageLanguage="C#"%>
  2. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <scriptrunat="server">
  4. stringMD5Crypto(stringstr)
  5. {
  6. byte[]b=System.Text.Encoding.Default.GetBytes(str);
  7. b=newSystem.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b);
  8. stringret="";
  9. for(inti=0;i<b.Length;i++)
  10. ret+=b[i].ToString("x").PadLeft(2,'0');
  11. returnret;
  12. }
  13. publicvoidencryptString(Objectsender,EventArgse)
  14. {
  15. myMD5.Text=MD5Crypto(txtClear.Text);
  16. MD5.Text=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtClear.Text,"MD5");
  17. }
  18. </script>
  19. <htmlxmlns="http://www.w3.org/1999/xhtml">
  20. <headrunat="server">
  21. <title>无标题页</title>
  22. </head>
  23. <body>
  24. <formid="form1"runat="server">
  25. <div>
  26. 明文:<asp:TextBoxID="txtClear"runat="server"/>
  27. <asp:Buttonrunat="server"Text="Md5摘要"OnClick="encryptString"ID="Button1"/>
  28. <br/>
  29. 通常用的MD5:
  30. <br/>
  31. <asp:LabelID="myMD5"runat="server"/>
  32. <br/>
  33. <br/>
  34. HashPasswordForStoringInConfigFile中的MD5:
  35. <br/>
  36. <asp:LabelID="MD5"runat="server"/>
  37. </div>
  38. </form>
  39. </body>
  40. </html>

你可能感兴趣的:(password)