none
关于WinForm中的MD5加密问题,求教! RRS feed

  • 问题

  • 这是我在Web中的加密方法
            public static string Encrypt(string Text, string sKey)
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray;
                inputByteArray = Encoding.Default.GetBytes(Text);
                des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
                des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                StringBuilder ret = new StringBuilder();
                foreach (byte b in ms.ToArray())
                {
                    ret.AppendFormat("{0:X2}", b);
                }
                return ret.ToString();
            }

    我现在需要在WinForm中对数据进行加密,但是同样的值得到的MD5值不同····请问我在WinForm中应该怎么样写

    2009年11月2日 7:04

答案

  • 你通过MD5CryptoServiceProvider 加密 然后通过BitConverter类转换成字符串
    这个时候生产地 字符串中有-需要将其去掉 这样无论是winform还是webform都可以得到相同的数据

    同时建议均将Encoding.Default通过Encoding.Utf8进行统一 不然有可能导致结果不一样


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2009年11月2日 7:43
    版主

全部回复

  • 你通过MD5CryptoServiceProvider 加密 然后通过BitConverter类转换成字符串
    这个时候生产地 字符串中有-需要将其去掉 这样无论是winform还是webform都可以得到相同的数据

    同时建议均将Encoding.Default通过Encoding.Utf8进行统一 不然有可能导致结果不一样


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2009年11月2日 7:43
    版主
  •         private string Md532(string str)
            {
                string cl = str;
                string pwd = "";
                MD5 md5 = 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;
            }
            private string Md516(string ConvertString)
            {
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);
                t2 = t2.Replace("-", "");
                t2 = t2.ToLower();
                return t2;
            }
    2009年11月2日 9:33
  • 谢谢··,我试验下

    2009年11月2日 12:45
  • 谢谢··,我试验下


    如果还是不行,你接着问,最好把web 和 winform的代码都贴下.
    2009年11月2日 14:16
  • 由于赶时间,我直接把Web上的加密的方法拿了过来,在WinForm中添加了System.Web的引用,
    如果做完有时间再测试,使用WinForm的,谢谢!
    2009年11月5日 0:49