-1
我想用c#md5和php md5來計算相同的結果,但他們給出了不同的結果。 c#代碼必須與php代碼相同。c#md5和php md5不是馬赫
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
感謝您的幫助。
你是100%確定所有的值都是**完全相同嗎?你是否正在運行,逐行檢查代碼以確定它?如果只有一位不同,你會得到不同的散列。 –
請編輯或刪除這個問題,因爲它目前的值非常低。看起來很清楚,'Encoding.Default.GetBytes(key + secretKey)'和'$ prec。$ SecretKey'不是同一個字節序列,但不清楚爲什麼這對任何人都有用。 –
@KennyEvitt這兩個代碼給出了我們測試的相同結果。你測試過了嗎? – safa