Преобразование хеш-функции C # в PHP

У меня есть следующая функция на C #, хеширующая функция, которая Мне нужно преобразовать в PHP. Я пробовал кое-что на PHP, но не получаю тех же результатов (у меня совсем плохо с .NET)

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;
} 

Одна (неправильная) попытка PHP такова:

function encode($data,$key)
{
    return base64_encode( hash_hmac('sha256', $data, $key ) );
}

ОТВЕТ

Небольшое изменение того, что было предложено ниже DampeS8N, сработало для меня.

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 ) );
}

Пожалуйста, также не четвертый параметр hash_hmac - теперь установлено значение true для необработанного вывода в виде двоичных данных

7
задан 32423hjh32423 10 January 2012 в 09:42
поделиться