JSONiq с Zorba HMAC
Я запускаю следующий код, используя fcavalieri/zorba
изображение докера. hmac:compute("The quick brown fox jumps over the lazy dog", "key" ,"SHA256")
производит: 97yD9DBThCSxMpjmqm+xQ+9NWaFJRhdZl0edvC0aPNg=
который при декодировании base64 возвращает мусор, а не ожидаемый f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
Я правильно использую этот модуль?
1 ответ
Это связано с тем, что выходные данные являются base64, что соответствует сигнатуре hmac:compute
,
Я предполагаю, что вы пытались использовать base64: decode - однако, эта функция преобразует фактические биты в кодировке base64 в строку, интерпретируя их как UTF-8, что здесь не то, что вам нужно.
В JSONiq есть два двоичных типа (на самом деле они взяты из XML-схемы): hexBinary
а также base64Binary
, Они имеют одинаковое пространство значений, но используют разные лексические пространства. Выход может быть преобразован в hexBinary
чтобы получить шестнадцатеричный вывод, например, так:
import module namespace hmac = "http://zorba.io/modules/hmac";
hexBinary(hmac:compute("The quick brown fox jumps over the lazy dog", "key" ,"SHA256"))
Зорба затем выводит ожидаемый F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8