我试图在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出了什么问题?我做错了什么?
答案 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输出小写的十六进制。