谷歌脚本hash_hmac()奇怪的行为

时间:2017-11-09 17:44:02

标签: php hash encoding google-apps-script

我试图在Google Script中使用hash_hmac算法对tring进行编码,但输出与我的预期不同。

Google Script:

Utilities.base64Encode(Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, "hello", "key"));

输出:

/ warNnV3d4FcAI0yyOFKcFtOe / MQNRoGojthLcTHQz53V9IFJaVZO3ECDqLuFi0jEbJH6YVYYrJwEiQZZSwMkg ==

腓:

echo hash_hmac("sha512", "hello", "key");

ff06ab36757777815c008d32c8e14a705b4e7bf310351a06a23b612dc4c7433e7757d20525a5593b71020ea2ee162d2311b247e9855862b270122419652c0c92

GS出了什么问题?我做错了什么?

1 个答案:

答案 0 :(得分:0)

上周刚遇到这个问题! GS base64对哈希的原始二进制结果进行编码。要在PHP中执行此操作,请为hash_hmac()的第4个参数传递一个truthy值,然后在结果上调用base64_encode()

echo base64_encode(hash_hmac("sha512", "hello", "key", true));

产地:

/warNnV3d4FcAI0yyOFKcFtOe/MQNRoGojthLcTHQz53V9IFJaVZO3ECDqLuFi0jEbJH6YVYYrJwEiQZZSwMkg==

第4个参数:

  

raw_output

     

设置为TRUE时,输出原始二进制数据。 FALSE输出小写的十六进制。