2012-10-01 24 views
5

Tengo algunos problemas para calcular el mismo hash en PHP que en C# .NET.¿Cómo generaría este mismo token en PHP? (De .NET)

En C#, tengo el siguiente:

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 

que produce algo así como:

yBV7ZfAyT1FwO5sGEVd3aPYUfBz9geN6ghK9RO68jwo =


En PHP, pensé que esto sería calcular el hash de la misma manera:

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

Sin embargo se produce una muy diferente, más grande de hash:

YzgxNTdiNjVmMDMyNGY1MTcwM2I5YjA2MTE1Nzc3NjhmNjE0N2MxY2ZkODFlMzdhODIxMmJkNDRlZWJjOGYwYQ ==

Respuesta

3

¿Ha intentado utilizar hash_hmac con la salida de datos binarios en bruto?

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

Esto parece producir una salida más como el de .NET:

NASzFnV3Flw5ppkTIja5/aaFELPNIpfQb+kbsXCAm0Q= 

en mi caso.

+0

Sí, lo intenté y fue el problema. ¡Gracias! – Buchannon

Cuestiones relacionadas