Я вычисляю хэш с помощью init-update-final механизм i.e инициализирует хэш-контекст, за которым следует хеш-обновление с различными размерами входных данных и итоговый расчет дайджеста. Это можно сделать, используя the EVP_DigestInit, EVP_DigestUpdate and EVP_DigestFinal_Ex functions of OpenSSL или Update and Final methods of Crypto++.Создает ли механизм Digest Init-Update-Final копию входных данных?
Из того, что я могу выкопать из исходного кода OpenSSL и Crypto ++, похоже, входные данные действительно копируются и хранятся. Может ли кто-нибудь подтвердить это? Является ли это ограничением процесса хеширования или стандартная процедура? И это зависит от используемого алгоритма дайджеста?
У меня создалось впечатление, что алгоритм хэширования будет вычислять некоторое внутреннее состояние на основе куска входных данных, а итоговый дайджест будет вычисляться на основе внутренних состояний, собранных по всем различным вызовам обновления. Кажется, это не так. Очевидно, я недостаточно разбираюсь в механике алгоритмов хэширования.