1

我正在使用fcavalieri/zorbadocker 映像运行以下代码。hmac:compute("The quick brown fox jumps over the lazy dog", "key" ,"SHA256")产生:97yD9DBThCSxMpjmqm+xQ+9NWaFJRhdZl0edvC0aPNg=当base64解码时返回垃圾而不是预期f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8

我是否正确使用了这个模块?

4

1 回答 1

1

这是因为输出是base64,与.的签名一致hmac:compute

我假设您尝试使用base64:decode - 但是,此函数将实际的 base64 编码位转换为字符串,将它们解释为 UTF-8,这不是您需要的。

JSONiq 中有两种二进制类型(它们实际上来自 XML Schema):hexBinarybase64Binary. 它们具有相同的值空间,但使用不同的词汇空间。可以将输出转换为hexBinary十六进制输出,如下所示:

import module namespace hmac = "http://zorba.io/modules/hmac";

hexBinary(hmac:compute("The quick brown fox jumps over the lazy dog", "key" ,"SHA256"))

Zorba 然后输出预期的F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8

于 2018-03-26T08:39:01.517 回答