генерирование хеша для данных больше памяти (без ареста) - PullRequest
2 голосов
/ 11 марта 2011

Добрый день.;)

Что я хочу сделать:

Я заинтересован в проверке целостности передаваемого файла.

Как я подошел к нему:

Я думал об использовании хеш-кода для этого, но есть одна проблема.Файлы могут быть очень большими, поэтому мне нужно иметь возможность итеративно генерировать хэш.Я не могу загрузить весь файл в память.

На что я смотрел до сих пор:

Я расследую murmur3 и моток для хэш-функции.Я верю, что понимаю, как заставить его работать со скейном, но созданная мной версия не прошла все известные модульные тесты результатов.Я не уверен, как «связать» бормотание, чтобы получить действительный результат.

Есть предложения?

Ответы [ 2 ]

5 голосов
/ 11 марта 2011

Большинство алгоритмов хеширования работают с блоками данных фиксированного размера - вы можете, например, искать эталонные реализации SHA1 или MD5, они используют конструкцию «init / loop {update} / finalize», позволяющую вам передавать столько данных, скольковы хотите в каждом обновлении.

Взглянув, например, на Skein, они используют ту же концепцию в своей эталонной реализации:

int  Skein_256_Init  (Skein_256_Ctxt_t *ctx, size_t hashBitLen);
int  Skein_256_Update(Skein_256_Ctxt_t *ctx, const u08b_t *msg, size_t msgByteCnt);
int  Skein_256_Final (Skein_256_Ctxt_t *ctx, u08b_t * hashVal);

Почему вы считаете, что вам нужно передавать все данные как один блок??Вы смотрите на упрощенные функции оболочки?

1 голос
/ 11 марта 2011

Вы должны взглянуть на Crypto ++ . Это моя любимая криптографическая библиотека C ++.

И вот как вы можете его использовать.

...