| ||||
| ||||
Подскажите, пожалуйста, почему при больших файлах происходит ошибка size := FileSize(infile); BlockRead(infile, buf, 512, size); if not CryptHashData(hash, @buf, size, 0) then begin ... end; Код ошибки ERROR_INVALID_PARAMETER. Если брать маленький файл, то дайджест считается. | ||||
Ответы: | ||||
| ||||
Потому что делается попытка загрузить весь файл в память. Хеш можно считать не сразу от всего файла, а подавая на вход последовательно куски файла. | ||||
| ||||
А какого размера должны быть куски? это зависит от алгоритма вычисления хеша? | ||||
| ||||
Нет, размер произвольный. Например, 64 Кб | ||||