Comments 14
Имхо, такие статьи хороши для новичков в данной теме и думаю таким статьям есть место на хабре. Для меня она уже не совсем актуальна, но прочитал с интересом. Спасибо :)
нашел немного странным то, что вроде понимая что такое сдвиг, Вы в коде умножаете и делите на числа кратные 2-м
Спасибо за подсказку, для меня такие действия пока не очевидны. Но думаю что, так будет оставить лучше, для таких как я, кто не сразу видит деревья за лесом, а числа быстрее воспринимаются. Сам код показательный, не очевидна только функция создания блоков, я попытался сделать вставку за один цикл, но порядок байтов нужно менять во втором. Думаю в ней найдется много чего, что следует оптимизировать.
Наверное, все-таки, не "кратные двум" а "степени двойки" - на "6" или подобное сдвигом не умножишь. Да и компилятор при оптимизации наверняка заменит умножение/деление на степень двойки сдвигом.
Мне кажется, как раз лучше делить на два. Компилятор, если что, оптимизирует. А для чтения кода и, так-то, для безопасной работы с числовыми переменными, запись "делить на два" лучше "сдвига на один"
Было бы неплохо добавить дисклеймер про то что не стоит эту реализацию использовать в своих криптоцелях.
Что-то в последнее время тема криптографии в ударе, то на одном, то на другом ресурсе что нибудь про шифры да и попадется. Винил "умные" ленты, раз уж я в такие статьи стабильно заглядываю, а тут на днях подшефному студенту в качестве зачетной работы по си задали реализацию AES.
Реализация алгоритма SHA-256