Нет, первый шаг неверен, так как он не дополняет должным образом, если в блоке осталось менее 64 бит. В этом случае заполнение должно охватывать два блока - сначала положить 1 и заполнить остальные нулями, а затем создать 448-битный блок.
Второе предложение мне неясно. 64-битное кодирование входного размера в битах необходимо добавить после заполнения.
Обратите внимание, что вы пытаетесь воссоздать описание алгоритма буквально. Это не очень хорошая идея. Вам необходимо обработать блоки открытого текста, ведя подсчет количества битов или байтов, а затем выполнить кодирование заполнения и длины, когда указан конец потока . Вам нужен 512-битный буфер, метод update
и final
.
Создание хеша с использованием строки, представляющей двоичный файл, не очень хорошая идея. Вы должны обрабатывать байты и, возможно, слова внутри. Вам нужно только что-нибудь кодировать для целей отладки.