Как по алгоритму 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 /этот же файл и не совпадают суммы!