Я строю систему, которая должна быть в состоянии найти, если blobs байтов были обновлены. Вместо того, чтобы хранить весь блок (они могут быть до 5 МБ), я думаю, что я должен вычислить контрольную сумму, сохранить это и вычислить одну и ту же контрольную сумму немного позже, чтобы узнать, обновлен ли блог.Какой алгоритм контрольной суммы я должен использовать?
Цель состоит в том, чтобы свести к минимуму следующему (в порядке убывания):
- размера контрольной суммы
- времени для вычисления
- вероятности столкновений (2 одинаковых контрольных суммы происходят, даже если содержание было модифицированный).
Для нашей системы допускается столкновение не более 1/1 000 000. Проблема заключается не в безопасности, а просто при обновлении/обнаружении ошибок, поэтому редкие столкновения в порядке. (Вот почему я стараюсь свести к минимуму).
Кроме того, мы не можем самостоятельно изменять капли текста.
Конечно, md5
, crc
или sha1
приходят на ум, и если бы я хотел быстрое решение, я бы пошел на это. Однако, более чем быстрое решение, я ищу, что может быть сравнение различных методов, а также за и против.
Я счастлив превратить этот вопрос в сообщество, если это имеет смысл! –
Что вас беспокоит, здесь? Вы просто проверяете, изменились ли ваши капли данных с раннего времени, или вы пытаетесь обнаружить вредоносное изменение? – dajames
Просто пытаюсь посмотреть, было ли в них какое-либо обновление. –