解决方案 »

  1.   

    可能是那台虚拟机缺少字符集或者区域设置不同
    导致byte[]再按utf-8编码转成字符串时,出现差异
    你应该改成将byte[]转换为十六进制字符串,而不是utf-8编码
    byte.ToString("x2")
      

  2.   

    byte[]再按utf-8编码转化为字符串
    改成用System.Convert.ToBase64String(bytes);因为md5哈希后的byte[]可能存在不可见字符,比如x00  
    *****************************************************************************
    签名档: http://feiyun0112.cnblogs.com/
      

  3.   


    其实我也是觉得最可能的就是这方面的原因了,可是又觉得道理上不通,Unicode本身是国际化编码,UTF-8就没道理会受到区域设置的影响啊,然后字符集缺失的话我觉得应该引发异常什么的吧,而不应该这么无声无息的吧,好吧,其实我还没去了解过字符集的概念,先去了解下
      

  4.   

    我的意思是md5哈希得到的byte[],包含一些不属于可转换成文字的内容,比如x00
    不过你确实可以用byte.ToString("x2")来输出
      

  5.   

    输出 byte.ToString("x2") 就行了
      

  6.   


    啊,明白你的意思了,是说哈希后byte[]里有些是不在utf-8编码范围内的,对吧?这的确是个问题,确实不能用utf-8来输出了,但是应该也不会导致我现在遇到的问题,毕竟登录验证时是使用了完全一致的哈希过程,有缺失的话,两次缺失的部分也一样,不会影响验证