1. Что такое размер блока?
Обычно, алгоритм хеширования обрабатывает данные, разрезая их на куски данных фиксированного размера (так называемые «блоки»). Для SHA1 у меня обычный размер блока составляет 64 байта.
2. Что делает функция нулей в строке 8?
Он (как говорится в комментарии) добавляет «нули» к концу ключа, чтобы его длина соответствовала размеру «блока».
3. Как вы выражаете строки 12-13 в C ++?
Я думаю, вы ищете оператора XOR: ^
.
Пример:
o_key_pad = (0x5c * blocksize) ^ key; // Actually, it should be 0x5c5c5c... repeated enough so that it matches key size.
Просто небольшая заметка : это не имеет ничего общего с Qt
, и вы, вероятно, захотите сделать это в «сыром» C++
, чтобы вы могли в конечном итоге использовать его в не Qt
проект. Qt
здорово imho, но вам явно не нужно это реализовывать.