@keqyCpp

Почему для добавления единичного бита используется именно 0x80?

Я изучаю реализацию алгоритма 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 бит.
  • Вопрос задан
  • 25 просмотров
Пригласить эксперта
Ответы на вопрос 1
Daemon23RUS
@Daemon23RUS
(unsigned char)0x80 это аж целых 8 !!! бит а 0x80 в битовом представлении = 10000000
Т.е 1 еденичка и все нули.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы