Многие SHA_*
методы определены здесь , то есть файл, который через препроцессор «настроен» как методы для SHA1, SHA256 ...
HASH_FINAL
метод SHA1_Final
(и SHA256_Final
).Здесь единственная операция, которая «пахнет» при очистке, это
OPENSSL_cleanse(p, HASH_CBLOCK);
, где OPENSSL_cleanse
равно
OPENSSL_cleanse () заполняет ptr размера len строкой из 0
(взято из здесь ).
Но размер OPENSSL_cleanse
равен HASH_CBLOCK
, поэтому я скажу, что он очищает внутреннийбуфер, используемый для хранения частичных фрагментов исходных данных, которые должны быть хешированы.Объяснение: SHA1 работает с 512 битами (64 байтами) данных одновременно.Если вы попытаетесь хэшировать 70 байтов данных с SHA1_Update
, то 64 байта хэшируются и 6 байтов сохраняются где-то для следующих SHA1_Update
.SHA1_Final
завершает использование этих байтов и затем очищает их.