Tengo la siguiente función en C#, una función de hash que necesito convertir a PHP. He intentado un par de cosas en PHP, pero no consigo los mismos resultados (no estoy del todo bien con .NET)Convertir la función de hash de C# en PHP
private static string GetSignature(string args, string privatekey)
{
var encoding = new System.Text.ASCIIEncoding();
byte[] key = encoding.GetBytes(privatekey);
var myhmacsha256 = new HMACSHA256(key);
byte[] hashValue = myhmacsha256.ComputeHash(encoding.GetBytes(args));
string hmac64 = Convert.ToBase64String(hashValue);
myhmacsha256.Clear();
return hmac64;
}
Uno (mal) intento en PHP es la siguiente:
function encode($data,$key)
{
return base64_encode(hash_hmac('sha256', $data, $key));
}
La RESPUESTA
Una ligera variación de lo que se sugiere a continuación por DampeS8N trabajó para mí.
function encode($data,$key)
{
iconv_set_encoding("input_encoding", "ASCII");
iconv_set_encoding("internal_encoding", "ASCII");
iconv_set_encoding("output_encoding", "ASCII");
return base64_encode(hash_hmac('sha256', $data, $key, true));
}
Por favor, tampoco el cuarto parámetro de hash_hmac - ahora se establece como true para la salida en bruto como datos binarios
Debe aceptar la respuesta de DampeS8N si lo encaminó en la dirección correcta. – jgauffin