博客园首页博问闪存新随笔联系订阅管理 随笔- 252 文章- 0 评论- 45 HashPasswordForStoringInConfigFile中的Md5算法并非常用的Md5算法...
今天在開發一個軟件時,同時在B/S版和C/S版中都要用到MD5加密,在
ASP.NET中使用的是
??? /** <summary>
??? /// 取得MD5加密串
??? /// </summary>
??? /// <param name="input">源明文字符串</param>
??? /// <returns>密文字符串</returns>
??? public static string GetMD5Hash(string input)
??? ...{
??????? return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strOriginal, "MD5");
??? }
的加密方式;
而在WinForm中用的是
??? /** <summary>
??? /// 取得MD5加密串
??? /// </summary>
??? /// <param name="input">源明文字符串</param>
??? /// <returns>密文字符串</returns>
??? public static string GetMD5Hash(string input)
??? ...{
??????? System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
??????? byte[] bs = System.Text.Encoding.Default.GetBytes(input);
??????? bs = md5.ComputeHash(bs);
??????? System.Text.StringBuilder s = new System.Text.StringBuilder();
??????? foreach (byte b in bs)
??????? ...{
??????????? s.Append(b.ToString("x2").ToUpper());
??????? }
??????? string password = s.ToString();
??????? return password;
??? }
但發現同樣一個字符串,兩種方式得出的密文是不一樣的,最后才發現原來是編碼方式導致的,ASP.NET里默認的是UTF-8編碼,把WinForm程序里的System.Text.Encoding.Default.GetBytes(input);替換成System.Text.Encoding.UTF8.GetBytes(input);即可
最終正確版:
??? /** <summary>
??? /// 取得MD5加密串
??? /// </summary>
??? /// <param name="input">源明文字符串</param>
??? /// <returns>密文字符串</returns>
??? public static string GetMD5Hash(string input)
??? ...{
??????? System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
??????? byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
??????? bs = md5.ComputeHash(bs);
??????? System.Text.StringBuilder s = new System.Text.StringBuilder();
??????? foreach (byte b in bs)
??????? ...{
??????????? s.Append(b.ToString("x2").ToUpper());
??????? }
??????? string password = s.ToString();
??????? return password;
??? }
總結
以上是生活随笔為你收集整理的博客园首页博问闪存新随笔联系订阅管理 随笔- 252 文章- 0 评论- 45 HashPasswordForStoringInConfigFile中的Md5算法并非常用的Md5算法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宁波公交车可以用支付宝吗
- 下一篇: 房贷不还有什么后果