c#md5和php md5不是马赫

时间:2016-08-02 03:25:39

标签: c# php md5

我正在尝试使用c#md5和php md5来计算相同的结果,但它们会给出不同的结果。 c#代码必须与php代码相同。

public string ToMD5(string orderId, string statusCode, string secretKey)
{
   string key = orderId + "+" + statusCode;
   key = Base64Encode(key);
   MD5 m = System.Security.Cryptography.MD5.Create();
   byte[] h = m.ComputeHash(Encoding.Default.GetBytes(key + secretKey));
   string r = "";

   foreach (byte b in h)
   {
       r += b.ToString("X2");
   }

   return r;
}

这是php代码:

$key = $orderid."+".$status;
$prec = base64_encode($key);
$prec = $prec.$SecretKey;
$prec = md5($prec);
echo $prec;
  

c#返回:CEC71705E5A25CCD21609B72053539FC

     

php返回:f1542715b25b302553119fda1e8567bb

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这两行产生相同的MD5哈希值:

  echo md5("12345+200OKSecret");

new List<byte>(MD5.Create().ComputeHash(Encoding.Default.GetBytes("12345+200OKSecret"))).ForEach(x => Console.Write("{0:X2}",x));

结果:

8df9a16122b34e41d49ad11d9f1e0c73

8DF9A16122B34E41D49AD11D9F1E0C73

检查要散列的字符串的值 - 它们必须不同。