public string GetMD5(string str)
{
            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
            Encoding en = Encoding.Default;
            byte[] buff = md5.ComputeHash(en.GetBytes(str));
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < buff.Length; i++)
            {
                sb.Append(buff[i].ToString("X2"));
            }
            return sb.ToString();
}以上是代码,把winfrom打包或者在debug中将exe取出来,在不同的电脑上显示的MD5加密结果都不一样。
有部分电脑是相同但是有的电脑就不相同,请问为什么呢?
加密的字符串是一串英文加当前的年月日
GetMD5("winfrom " + DateTime.Now.Date.ToString())这样调用的...

解决方案 »

  1.   

    http://www.cnblogs.com/shihao/archive/2011/07/30/2121683.html
    看看别人怎么实现的吧,我也说不上来
      

  2.   

    我是在winfrom里面实现的,不是asp.NET上面,asp.net肯定就不会出现我说的那种情况..
    我是在不同的电脑运行同一个winfrom程序显示的md5加密结果不一样...
      

  3.   

    Encoding en = Encoding.Default;
    这个Encoding.Default是会不同电脑不一样的。换成Encoding.Unicode或Encodeing.UTF8。
      

  4.   

    DateTime.Now.Date.ToString();
    也是会不同电脑不一样的(时间格式不同,结果就不一样)。
      

  5.   

     public string Md5(string str)
    {
                string cl = str;
                string pwd = "";
                System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
                byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
                for (int i = 0; i < s.Length; i++)
                {                pwd = pwd + s[i].ToString("X");            }
                return pwd;
    }
      之前我也怀疑是不是,我代码换成了这个,全部用UTF8的了,但是还有不一样...