Хабы: Программирование
Сижу я значит спокойно, никого не трогаю, починяю примус, и вдруг как захочется сгенерировать SHA-256 целиком внутри процессора без обращения к памяти, что прям места себе не нахожу.
В итоге к памяти все таки пришлось обращаться за самим сообщением, константами и сохранять начальное значение hesh блока, а в остальном смотрите ниже.
Чтобы код имел хоть какай-то практический смысл, я скомпилировал его в статическую библиотеку и написал для него с++ имплементирующий класс, который разместил в заголовочном файле.
Поскольку с точки зрения с++ метод представляет собой статическую функцию член класса, принимающую два параметра (указатель и длину) и возвращающую hesh непосредственно, значит реализация должна принимать три параметра, первый указатель на вывод, второй указатель на ввод, третий длина сообщения в байтах.
Читать далее