-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任意の助け
感謝。
あなたはすべての値が**正確** **同じですか?コードを実行しているときに、その行を確認していますか?単一のビットが異なる場合は、異なるハッシュを取得します。 –
この質問を編集したり削除したりしてください。 'Encoding.Default.GetBytes(key + secretKey)'と '$ prec。$ SecretKey'は同じバイトシーケンスではありませんが、それはなぜ誰にとっても便利な理由は不明です。 –
@KennyEvittは、2つのコードがテストした結果と同じ結果をもたらすことを示しています。あなたはそれを試しましたか? – safa