27.07.2005 16:35:52Определение дайджеста Ответов: 3
Ирина
Подскажите, пожалуйста, почему при больших файлах происходит ошибка
size := FileSize(infile);
BlockRead(infile, buf, 512, size);
if not CryptHashData(hash, @buf, size, 0) then begin
...
end;
Код ошибки ERROR_INVALID_PARAMETER.
Если брать маленький файл, то дайджест считается.
 
Ответы:
28.07.2005 10:49:09Василий
Потому что делается попытка загрузить весь файл в память.

Хеш можно считать не сразу от всего файла, а подавая на вход последовательно куски файла.
28.07.2005 10:55:23Ирина
А какого размера должны быть куски? это зависит от алгоритма вычисления хеша?
28.07.2005 11:02:56Василий
Нет, размер произвольный.
Например, 64 Кб