Дайджесты OpenSSL и PHP SHA256 отличаются

1

Я пытаюсь вычислить хэш-код sha256, кодированный base64, в командной строке с использованием OpenSSL и через PHP.

cat test.js | openssl dgst -sha256 -binary | openssl enc -base64
(p5CrWBV6O1Xp7BlWwdVXTeGeSx3uo/IsNaYOIOblAZk=)

echo base64_encode(hash("sha256", "alert('Test');", true));
(2D7QyY5W4ziVZhF/vzeGy8oHgnz4TjqaoifV41mHi3c=)

Полученные base64-кодированные значения не совпадают, но вход для каждого метода одинаков. Возвращаясь назад, хэш-таблицы sha256 не совпадают до кодировки base64.

cat test.js | openssl dgst -sha256
(a790ab58157a3b55e9ec1956c1d5574de19e4b1deea3f22c35a60e20e6e50199)

echo hash("sha256", "alert('Test');");
(d83ed0c98e56e3389566117fbf3786cbca07827cf84e3a9aa227d5e359878b77)

Я не уверен, где проблема.

Теги:
base64
openssl
sha256

2 ответа

1
Лучший ответ

Я нашел проблему в конце благодаря некоторой поддержке в Twitter.

При редактировании JS файла с помощью nano в конце он добавлял символ новой строки. Редактирование файла с помощью nano -L test.js разрешило проблему.

0

cat добавляет дополнительный символ новой строки, который идет вперед для езды в дайджесте. Попробуйте запустить дайджест в файле напрямую:

openssl dgst -sha256 -binary test.js | ...
  • 1
    cat не добавляет новую строку после вывода

Ещё вопросы

Сообщество Overcoder
Наверх
Меню