Я запускаю node.js и php в Windows и использую модуль crypto в node.js.
PHP-скрипт:
hash_hmac("sha256", "foo", "bar", true) // the true enables binary output
выходы:
¶Y3! Ȭ╝♂ï►ó│Ñ├Fä╚┘CA╝ ± G6▄rp¸t ↑ Q
Скрипт Node.js:
crypto.createHmac("sha256", "bar").update("foo").digest("binary");
выходы:
¶Y3!? ª¼♂? ► ¢ ³ ¥ Af? ÈÙCA¼ñG6Ürp ÷ т ↑ Q
Мне также интересно, почему некоторые цифры такие же, а другие нет.
Я также попытался получить гекс вместо двоичного результата, оба вывод такой же.
hash_hmac("sha256", "foo", "bar", false); // false outputs hex data
crypto.createHmac("sha256", "bar").update("foo").digest("hex"); // notice "hex"
Это не было решением, потому что мне не удалось преобразовать шестнадцатеричные данные в двоичные:
var hmac = crypto.createHmac("sha256", "bar").update("foo").digest("hex");
var binary = new Buffer(hmac, "hex");
Переменная binary
выходы:
¶Y3! ??? ♂? ► ???? F ??? CA ?? G6? Тр? Т ↑ Q
Задача ещё не решена.
Других решений пока нет …