Как вы кодируете SHA-256 дважды?

#hash #cryptography

#хэш #криптография

Вопрос:

Очень просто, как получить «второй раунд» ниже?

здравствуйте
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (первый раунд sha-256)
9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50 (второй раунд sha-256)

Я зашел в онлайн-калькулятор хэша, ввел «привет», получил первый раунд, а затем взял этот хэш и поместил его в калькулятор и получил результат, отличный от второго раунда. Как тогда это делается дважды?

Комментарии:

1. Если вы просто скопировали / вставили первый результат, скорее всего, в его конце был добавлен один или несколько пробелов, что полностью удалит хэш.

2. Я просто ввел это, чтобы посмотреть, изменится ли это, и этого не произошло. Я продолжаю получать d7914fe546b684688bb95f4f888a92dfc680603a75f23eb823658031fff766d9

3. Эта цитата, которую я тогда вытащил, неверна?

4. должен ли он хэшировать необработанные байты, а не байты, закодированные в base64?

Ответ №1:

Когда вы вставляли первый вывод хэша обратно в хэш-калькулятор для второго раунда, вы хэшировали его как строку ASCII из букв и цифр, а не как фактическую последовательность байтов, выраженную этими шестнадцатеричными числами. Другими словами, первый байт строки, которую вы вставляете в хэш-калькулятор, на самом деле должен быть 0x2C, а не 0x32 (что является значением ASCII символа «2» в начале «2cf2 …»)

Комментарии:

1. Хорошо, тогда моя логика верна. Он хэширует выходные данные первого хэша. Большое спасибо.

2. @joslinm, конечно. SHA не волнует, является ли ввод, который вы ему даете, результатом другого вызова SHA. Это просто байты.

Ответ №2:

 echo -n hello | openssl dgst -sha256 -binary | openssl dgst -sha256