Я изучаю реализацию алгоритма sha-1 на с++. Для добавления единичного бита используется 0x80. Почему если надо добавить единицу, добавляется 128?
void SHA_1::extension()//Шаг 1 - Расширение сообщения
{
bitlen = message.size() * 8; //Исходная длина сообщения в битах (нужна для шага 2)
message.push_back((unsigned char)0x80); //Добавляем в конец сообщения единичный бит
while ((message.size() * 8) % 512 != 448) //До тех пор, пока длина сообщения не станет равной 448 по модулю 512,
message.push_back(0); //Заполняем сообщение нулями
}
Вот что написано на википедии:
Исходное сообщение разбивается на блоки по 512 бит в каждом. Последний блок дополняется до длины, кратной 512 бит. Сначала добавляется 1 (бит), а потом — нули, чтобы длина блока стала равной 512 — 64 = 448 бит.