MD5函数如下:
public string MD5(string strIn)
{
    MD5 MD5 = new MD5CryptoServiceProvider();
    byte[] datSource = System.Text.Encoding.Default.GetBytes(strIn);
    byte[] tmpByte = MD5.ComputeHash(datSource); //ComputeHash后结果不同。
    string byte2String = ConvertByte2String(tmpByte);
    return byte2String;
}2个不同程序,输入相同的字符串,但结果不同。调试时发现ComputeHash后,tmpByte的值不同。

解决方案 »

  1.   

    包含MD5方法的一个类,在2个程序调用时,加密相同字符串的结果不同。以前调用一直正常的,而且对类也无修改。
    .ComputeHash(datSource)
    这个方法不知会受哪些因素的影响?
      

  2.   

    Encoding.Default根当前操作系统有关系
    建议改成Encoding.Unicode或者Encoding.GetEncoding("GB2312");
      

  3.   

    byte[] datSource = System.Text.Encoding.Default.GetBytes(strIn);
    -----------------
    你做了编码转换...选择了默认ANSI编码...在不同语言的系统上得到的datSource不一定相同...
      

  4.   

    1、
    我是在同一操作系统上的。并且是对2个程序同时单步侦错,结果datSource的值 还是一样,但
    byte[]   tmpByte   =   MD5.ComputeHash(datSource);   
    //ComputeHash后tmpByte结果却不同了。因此有一个主程序调用MD5方法后的结果就是错误的,这个很不理解。2、
    System.Text.Encoding.Default.GetBytes(strIn); 
    用默认的语言的确是会造成编码结果的不同,这个已经在不同平台测试过了。但文本文件是按默认语言编码的,如果进行MD5加密时,可以用UTF8吗?会生产错误吗?
      

  5.   

    MD5是对byte数组加密而不是字符串。你得到的byte数组不一样加密结果当然不一样。至于为什么得到的byte数组不一样那就要问你了。
      

  6.   

    To:danjiewu(阿丹) “MD5是对byte数组加密而不是字符串。”,应该是对字符串转换为字节后再编码吧?byte[]       tmpByte       =       MD5.ComputeHash(datSource);   
    产生的不同只可能是ComputeHash导致的,因为datSource的值还是一致的。
    这个正是需要你帮忙解释的地方。
      

  7.   

    既然是同一个DLL...显然不是MD5.ComputeHash导致的...你而是仔细看看datSource的值到底是不是一致吧...
      

  8.   

    To vrhero:
    确实是datSource不同,生成的结果28和30位刚好调换过来了。但这2个程序都是在一台机器上运行的,传入的字符串也是一样的,哪些原因会导致不同呢?
    谢谢。
      

  9.   

    顶顶帖子
    顶顶帖子,高手们也请多多赐教
    http://topic.csdn.net/u/20110913/13/59f92d11-1fb0-4b7e-9c4a-e93d8f19c689.html
    http://topic.csdn.net/u/20110611/12/3258c959-4f28-46b7-b5d6-46135d73036b.html
    http://topic.csdn.net/u/20110722/14/89f7440b-c4d7-4c9a-a4bb-a503f5135db2.html
    http://topic.csdn.net/u/20110729/10/a7bfaf06-0cf9-4580-8e91-d4e0b92066c6.html
    http://topic.csdn.net/u/20110811/16/e56e7cc1-d8c9-40af-92e3-c24ca103d17d.html
    http://topic.csdn.net/u/20110830/13/dfae4ca5-d2b9-4889-8a3c-6f7fb61936c9.html
    http://topic.csdn.net/u/20110905/12/a1161adb-8e5d-491a-b302-c9722edf2dab.html
    http://topic.csdn.net/u/20110913/16/2dbcc9db-8f71-40c5-901f-afae9026f7c2.html
    http://topic.csdn.net/u/20110913/13/59f92d11-1fb0-4b7e-9c4a-e93d8f19c689.html