2009-03-30 4 views
8

das ist mein PHP-Code:hmac_sha256 in PHP und C# unterscheiden

hash_hmac("sha256", utf8_encode($filename), utf8_encode($password)); 

und dies ist mein C# -Code:

var hmacsha256 = new HMACSHA256(Encoding.UTF8.GetBytes(password)); 
hmacsha256.ComputeHash(Encoding.UTF8.GetBytes(filename)); 

leider beiden Ergebnisse abweichen. Kann mir jemand einen Hinweis geben?

Antwort

16

Meine C# ist nicht die beste, aber ich habe es zu arbeiten, was Sie tun müssen, ist Ihre Byte-Array-Ergebnisse in Hex konvertieren.

PHP

$hash = hash_hmac("sha256", utf8_encode("Filename"), utf8_encode("Password")); 
echo $hash; 
// 5fe2ae06ff9828b33fe304545289a3f590bfd948ca9ab731c980379992ef41f1 

C#

string password = "Password"; 
string filename = "Filename"; 

var hmacsha256 = new HMACSHA256(Encoding.UTF8.GetBytes(password)); 
hmacsha256.ComputeHash(Encoding.UTF8.GetBytes(filename)); 

foreach(byte test in hmacsha256.Hash) 
{ 
    Console.Write(test.ToString("X2")); 
} 
// 5FE2AE06FF9828B33FE304545289A3F590BFD948CA9AB731C980379992EF41F1 
+0

Danke - ich verdoppeln überprüfen und an diesem Abend zu dir zurückkommen. Ich habe bereits BitConverter.ToString (hmacsha256.Hash) verwendet, aber ich habe falsche Ergebnisse erhalten. – tanascius

+0

Gern geschehen :) –

Verwandte Themen