C # entspricht hash_hmac in PHP

Unter .NET und C # muss ich einem PHP-Server eine Integritätszeichenfolge mit HMAC SHA512 bereitstellen. Verwendung in C #:

Encoding encoding = Encoding.UTF8;
byte[] keyByte = encoding.GetBytes(key);
HMACSHA512 hmacsha512 = new HMACSHA512(keyByte);
byte[] messageBytes = encoding.GetBytes(message);
byte[]  hashmessage = hmacsha512.ComputeHash(messageBytes);
return(ByteToString(hashmessage).toUpper());

Aber es passt nicht zu PHP hash_hmac () PHP Code:

$hmac = strtoupper(hash_hmac($pbx_hash, $msg, $binKey));

Ich versuche, die Codierung in C # (utf8, ASCII, Unicode) zu ändern. Ohne Erfolg.

Ich habe viele Lösungen aus dem Netz ausprobiert, aber nichts gibt die gleiche Zeichenfolge :(

Ich kann den PHP-Code nicht ändern und sehe nicht, was in C # falsch ist

Bearbeiten Das istByteToString (aus dem Kommentar übernommen):

static string ByteToString(byte[] buff)
{
    string sbinary = "";
    for (int i = 0; i < buff.Length; i++)
    {
        sbinary += buff[i].ToString("X2"); /* hex format */
    }
    return (sbinary);
}    

Nach vielen Tests wurde festgestellt, dass ich die gleichen Ergebnisse erhalte, wenn PHP hash_hmac key eine Zeichenfolge ist, kein Byte-Array. Anscheinend liegt das Problem bei der PHP-Konvertierungsfunktion $ binKey = pack ("H *", $ keyTest);

Antworten auf die Frage(3)

Ihre Antwort auf die Frage