2012-10-01 10 views
5

Mam problem z obliczaniem tego samego skrótu w PHP, tak jak ja w C# .NET.Jak wygenerować ten sam token w PHP? (Od .NET)

W języku C#, mam następujące:

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 

która produkuje coś takiego:

yBV7ZfAyT1FwO5sGEVd3aPYUfBz9geN6ghK9RO68jwo =


W PHP, myślałem, że to obliczyć mieszanie w taki sam sposób:

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

Jednak to daje znacznie inny, większy hash:

YzgxNTdiNjVmMDMyNGY1MTcwM2I5YjA2MTE1Nzc3NjhmNjE0N2MxY2ZkODFlMzdhODIxMmJkNDRlZWJjOGYwYQ ==

Odpowiedz

3

próbowałeś za pomocą hash_hmac z surowego binarnym wyjściem danych?

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

To wydaje się produkować wyjście bardziej przypomina ten z .NET:

NASzFnV3Flw5ppkTIja5/aaFELPNIpfQb+kbsXCAm0Q= 

w moim przypadku.

+0

Tak, właśnie próbowałem, i to był problem. Dziękuję Ci! – Buchannon