我在 PHP 中计算与在 C# .NET 中相同的哈希时遇到了一些麻烦。
在 C# 中,我有以下内容:
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
这会产生类似的东西:
yBV7ZfAyT1FwO5sGEVd3aPYUfBz9geN6ghK9RO68jwo=
在 PHP 中,我认为这会以相同的方式计算哈希:
$hmac = hash_hmac("sha256", "2012-10-01T17:48:56", "secret");
$hmac = base64_encode($hmac);
然而,它产生了一个非常不同的、更大的散列:
YzgxNTdiNjVmMDMyNGY1MTcwM2I5YjA2MTE1Nzc3NjhmNjE0N2MxY2ZkODFlMzdhODIxMmJkNDRlZWJjOGYwYQ==