2012-10-01 9 views
5

Ich habe einige Probleme, den gleichen Hash in PHP zu berechnen, wie ich in C# .NET bin.Wie würde ich das gleiche Token in PHP erzeugen? (Von .NET)

In C#, habe ich folgendes:

HMAC hasher = new HMACSHA256(Encoding.UTF8.GetBytes("secret")); //key 
byte[] data = hasher.ComputeHash(Encoding.UTF8.GetBytes("2012-10-01T17:48:56")); //timestamp 
Convert.ToBase64String(data); //computed token 

, die wie etwas produziert:

yBV7ZfAyT1FwO5sGEVd3aPYUfBz9geN6ghK9RO68jwo =


In PHP, dachte ich, das die Berechnung würde Hash auf die gleiche Weise:

$hmac = hash_hmac("sha256", "2012-10-01T17:48:56", "secret"); 
$hmac = base64_encode($hmac); 

aber es erzeugt eine ganz andere, größere hash:

YzgxNTdiNjVmMDMyNGY1MTcwM2I5YjA2MTE1Nzc3NjhmNjE0N2MxY2ZkODFlMzdhODIxMmJkNDRlZWJjOGYwYQ ==

Antwort

3

Haben Sie versucht hash_hmac mit Raw-Binary-Datenausgabe mit?

$hmac = hash_hmac("sha256", "2012-10-01T17:48:56", "secret", true); 
$hmac = base64_encode($hmac); 

Dies scheint eine Ausgabe mehr wie die von .NET zu produzieren:

NASzFnV3Flw5ppkTIja5/aaFELPNIpfQb+kbsXCAm0Q= 

in meinem Fall.

+0

Ja, ich habe es gerade versucht und es war das Problem. Vielen Dank! – Buchannon