2012-10-01 29 views
5

Tôi đang gặp một số sự cố khi tính toán cùng một giá trị băm trong PHP như trong C# .NET.Làm cách nào để tạo cùng một mã thông báo này trong PHP? (Từ .NET)

Trong C#, tôi có như sau:

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 

nào tạo ra một cái gì đó như:

yBV7ZfAyT1FwO5sGEVd3aPYUfBz9geN6ghK9RO68jwo =


Trong PHP, tôi nghĩ điều này sẽ tính toán băm theo cùng một cách:

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

Tuy nhiên nó tạo ra một khác biệt nhiều, băm lớn hơn:

YzgxNTdiNjVmMDMyNGY1MTcwM2I5YjA2MTE1Nzc3NjhmNjE0N2MxY2ZkODFlMzdhODIxMmJkNDRlZWJjOGYwYQ ==

Trả lời

3

Bạn đã cố gắng sử dụng hash_hmac với sản lượng dữ liệu nhị phân?

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

này dường như để tạo ra một sản lượng giống như một từ NET:

NASzFnV3Flw5ppkTIja5/aaFELPNIpfQb+kbsXCAm0Q= 

trong trường hợp của tôi.

+0

Vâng, tôi vừa thử điều đó và đó là vấn đề. Cảm ơn bạn! – Buchannon

Các vấn đề liên quan