Как по алгоритму sha-1 правильно инициализировать (дополнить) входное сообщение?

Здравствуйте. Пытаюсь написать программу на Си которая реализует данный алгоритм. Руководствуюсь вот этой страницей . Вроде все понятно, но инициализация (словесное описание дополнения массива до 512 бит) звучит не понятно например, в моем случае. Считаю сумму извлеченного из файла символа 'B'(01000010), т.е. если говорить о битах то длина 7? Далее в конец сообщения добавить 1(бит), и заполнять нулями до конца 512 бита затем вставить в оставшиеся 64 бита длину исходного сообщения в битах (в ,big-endian ), то должно получиться длина сообщения 512бит и иметь такое представление в двоичном виде(01000011('B'+1=C(67))00000.......0000000111(длина исходного сообщения-7))? Что делаю не так, в какую позицию должен встать первый единичный бит, и что будет если длина исходного сообщения будет 448 бит? Так же не понятно на странице ниже псевдокод имеет знаки "+", это операция исключающего ИЛИ по модулю 2^32 или тупо арифметическое сложение? И еще, подскажите из псевдокода вот эту операцию ((a leftrotate 5)) или((b leftrotate 30)) производить с дальнейшим присваиванием к переменной а b, или вводить пару новых переменных чтоб первоначальное значение а и b оставалось? Просто постоянно сверяюсь со значением которое дает sha1sum /этот же файл и не совпадают суммы!
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
https://ru.wikipedia.org/wiki/SHA-1 псевдокод в наличии. А вообще зачем писать велосипед с нуля? https://tls.mbed.org/source-code
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы