6

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 ==

4

1 に答える 1

4

生のバイナリデータ出力でhash_hmacを使用してみましたか?

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

これにより、.NETからの出力に似た出力が生成されるようです。

NASzFnV3Flw5ppkTIja5/aaFELPNIpfQb+kbsXCAm0Q=

私の場合。

于 2012-10-01T18:47:57.963 に答える