Как происходит хеширование буффера?
Имеется хеш из 32 символов var hex = 'c5bf72e887242098655ab4f3bdeee997';, из него создается буфер
new Buffer(hex, 'hex'), как я понимаю буфер по сути, это тоже самое что и hex.match(/.{1,2}/g)
Далее делаем
crypto.createHash('sha256')
.update(hexBuffer)
.digest();
Если загонять в sha256 обычный hex, получаются отличимые от sha256(hexBuffer) данные. Чем преобразование буфера в sha256 отличимо от преобразования string в sha256?
UPD
Уточню, что имеется ввиду, загоняя, исходный текст в виде буффера(hex), я получаю:
df9c65fa98b3d31e8e2548ed3b7c383338275705545eaabf560a619372a433ec
Но загоняя исходный в виде обычного текста на выходе получается
43c0e15148c1b1b9e7253f940081f4740d2f3c74c408c8ae8a4d704a7d4f21e5
Чем отличаются 2 данных преобразования?
А задача моя используя библиотеку sjcl sha256 (если это возможно), получить из hex такой же ответ, как получаю в первом примере выше. Но буфер как входные данные он не принимает
Ответы (1 шт):
Похоже проблема в непонимании что такое Buffer в Node.js.
Если совсем просто, Buffer это набор байтов.
var hex = 'c5bf72e887242098655ab4f3bdeee997';
var hexBuffer = Buffer.from(hex, 'hex');
Теперь в hexBuffer лежит 16 байт. Например hexBuffer[0] === 197 или, то же самое, hexBuffer[0] === 0xc5.
Перейдём к хешу. hash.update принимает два параметра, собственно данные и «кодировка» в которой они записаны. Кодировка по умолчанию 'utf8'. Но кодировка нужна только для того, что бы преобразовать строку в Buffer, так что если первый параметр это уже буфер, то второй параметр не нужен.
Поэтому следующие строки дают одинаковый результат:
hash.update(hexBuffer)
hash.update(Buffer.from(hex, 'hex'))
hash.update(hex, 'hex')
вы же не передали второй параметр, что эквивалентно hash.update(hex, 'utf8') и конечно результат получается другой. Потому что по сути вы передали другие данные:
Buffer.from(hex, 'hex')
// <Buffer c5 bf 72 e8 87 24 20 98 65 5a b4 f3 bd ee e9 97>
Buffer.from(hex, 'utf8')
// <Buffer 63 35 62 66 37 32 65 38 38 37 32 34 32 30 39 38 36 35 35 61 62 34 66 33 62 64 65 65 65 39 39 37>