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

Другие вопросы по тегам