Мне нужно выяснить, почему я получаю неправильные результаты, вот что:
Ожидаемый результат
Mu0FBjARVsNyDiixnKqyLCCqVunTSPQFCMnOwGQsIWliY2Jh
Текущий результат
MzJlZDA1MDYzMDExNTZjMzcyMGUyOGIxOWNhYWIyMmMyMGFhNTZlOWQzNDhmNDA1MDhjOWNlYzA2NDJjMjE2OQ ==
Код, который я использую (php)
echo base64_encode(hash("sha256", $pass.$salt'));
Этот сайт http://www.insidepro.com/hashes.php giveme дает более близкий результат
sha256 ($ pass. $ salt) => Mu0FBjARVsNyDiixnKqyLCCqVunTSPQFCMnOwGQsIWk =
вы можете найти (на сайте, рядом с полем результата) [1], что означает «Хэш в Base64»
вещь … Я даже не могу получить результаты сайтов
EDIT (Спасибо, Джон)
теперь код выглядит следующим образом
echo base64_encode(hash("sha256", $pass.$salt', true));
Я получаю тот же результат, что и на сайте
теперь проблема заключается в различии между двумя результатами
actual result : Mu0FBjARVsNyDiixnKqyLCCqVunTSPQFCMnOwGQsIWk= expected result : Mu0FBjARVsNyDiixnKqyLCCqVunTSPQFCMnOwGQsIWliY2Jh
hash
возвращает шестнадцатеричную строку своего вывода по умолчанию, в то время как вы ожидаете возвращения необработанных байтов. К счастью, он принимает третий аргумент; установите значение true
следующим образом:
echo base64_encode(hash("sha256", $pass.$salt', true));