Рейтинг:0

Запрос относительно алгоритма SHA256

флаг br

Я пытаюсь закодировать SHA256 с нуля, чтобы понять его реализацию на основе псевдокода вики, поскольку он достаточно ясен. Но у меня возникают проблемы с вычислением W[i] для первого блока. Я уверен, что где-то у меня отсутствует логика. Учитывая строку данных размером 80 байт (в шестнадцатеричном формате): "02000000aaf8ab82362344f49083ee4edef795362cf135293564c4070000000000000000c009bb6222e9bc4cdb8f26b2e8a2f8d163509691a4038fa692abf9a474c9b21476800755c02e17181fe6c1c3"

После заполнения получается строка данных размером 128 байт (в шестнадцатеричном формате): "02000000aaf8ab82362344f49083ee4edef795362cf135293564c4070000000000000000c009bb6222e9bc4cdb8f26b2e8a2f8d163509691a4038fa692abf9a474c9b21476800755c02e17181fe6c1c3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280"

Теперь это разделено на 2 куска по 64 байта каждый: "02000000aaf8ab82362344f49083ee4edef795362cf135293564c40700000000000000000c009bb6222e9bc4cdb8f26b2e8a2f8d163509691a4038fa692abf9a4"

"74c9b21476800755c02e17181fe6c1c3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"

Теперь, когда мы начинаем обрабатывать первый фрагмент, как мы заполняем массив расписания сообщений с 64 элементами w[0..63] из 32-битных слов. Вики говорит: «(Начальные значения в w[0..63] не имеют значения, поэтому многие реализации обнуляют их здесь)» скопировать фрагмент в первые 16 слов w[0..15] массива расписания сообщений

Поэтому я пытаюсь заполнить массив расписания сообщений следующим образом:

Вт[0]=0200

Вт[1]=0000

W[2]=aaf8

W[3]=ab82

W[4]=3623 и так далее до W[15].

Все значения от W[16] до W[63] равны 0.

Но эти значения кажутся неверными. Что я делаю неправильно здесь. Может кто-нибудь указать, что здесь не так?

Рейтинг:3
флаг my

Вт[0]=0200

Вот ваша проблема - с SHA-256 каждое слово составляет 32 бита, а не 16.

Итак, это должно быть:

Вт[0] = 02000000 
W[1] = aaf8ab82
W[2] = 362344f4

и т.д...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.