Хэш-код и Контрольная сумма - каково различие?

107
задан Mark Amery 22 August 2013 в 21:08
поделиться

7 ответов

Я сказал бы, что контрольная сумма обязательно хэш-код . Однако не все хэш-коды делают хорошие контрольные суммы.

контрольная сумма А имеет особое назначение---, она проверяет или проверки целостность данных (некоторые могут пойти кроме того путем обеспечения коррекция ошибок ). "Хорошие" контрольные суммы легко вычислить и могут обнаружить много типов повреждений данных (например, один, два, три бита с ошибкой).

хэш-код А просто описывает математическая функция , которая отображает данные на некоторое значение. Когда используется в качестве средства индексации в структурах данных (например, хэш-таблица), низкая вероятность коллизии желательна.

65
ответ дан Zach Scrivena 24 November 2019 в 03:42
поделиться

Существует различная цель позади каждого из них:

  • Хэш-код - разработанный, чтобы быть случайным через его домен (для уменьшения коллизий в хэш-таблицах и таком). Криптографические хэш-коды также разработаны, чтобы быть в вычислительном отношении неосуществимыми инвертировать.
  • Контрольная сумма - разработанный, чтобы обнаружить наиболее распространенные ошибки в данных и часто быть быстрым для вычисления (для эффективного вычисления контрольной суммы быстрые потоки данных).

На практике, те же функции часто хороши для обеих целей. В частности, криптографически сильный хэш-код является хорошей контрольной суммой (почти невозможно, что случайная ошибка повредит сильную хеш-функцию), если можно предоставить вычислительную стоимость.

40
ответ дан Rafał Dowgird 24 November 2019 в 03:42
поделиться

Существуют действительно некоторые различия:

  • Контрольные суммы просто должны отличаться, когда вход отличается (как часто столь же возможный), но почти как важно, что они быстры для вычисления.
  • Хэш-коды (для использования в хеш-таблицах) имеют те же требования, и дополнительно они должны быть равномерно распределены через пространство кода, специально для исходных данных, которые подобны.
  • Криптографические хеши имеют очень более строгое требование, которое, учитывая хеш, Вы не можете создать вход, который производит этот хеш. Время вычисления приходит вторым, и в зависимости от applicatin может даже быть желательно для хеша очень не спешить вычислять (для борьбы с атаками перебором).
21
ответ дан Michael Borgwardt 24 November 2019 в 03:42
поделиться

Википедия помещает его хорошо:

функции Контрольной суммы связаны с хеш-функциями, цифровыми отпечатками, функциями рандомизации и криптографическими хеш-функциями. Однако каждое из тех понятий имеет различные приложения и поэтому различные цели дизайна. Контрольные разряды и биты четности являются особыми случаями контрольных сумм, подходящих для небольших блоков данных (таких как Номера социального страхования, номера банковских счетов, компьютерные слова, единственные байты, и т.д.). Некоторые коды с коррекцией ошибок основаны на специальных контрольных суммах, которые не только обнаруживают распространенные ошибки, но также и позволяют исходным данным быть восстановленными в определенных случаях.

8
ответ дан Jon Skeet 24 November 2019 в 03:42
поделиться

Хэш-коды и контрольные суммы оба используются для создавания короткой численной стоимости от элемента данных. Различие - то, что значение контрольной суммы должно измениться, даже если маленькая модификация сделана к элементу данных. Для значения хэш-функции требование просто, что реальные элементы данных должны иметь отличные значения хэш-функции.

А ясный пример строки. Контрольная сумма для строки должна включать каждый бит и вопросы порядка. Хэш-код, с другой стороны, может часто реализовываться как контрольная сумма префикса ограниченной длины. Это означало бы, что "aaaaaaaaaaba" хеширует то же как "aaaaaaaaaaab", но хеш-алгоритмы могут иметь дело wth такие коллизии.

8
ответ дан MSalters 24 November 2019 в 03:42
поделиться

В эти дни они interchangable, но в днях былого контрольная сумма была очень простым techique, где Вы сложите все данные (обычно в байтах) и прикрепите байт на конце с тем значением в.. тогда Вы, надо надеяться, знали бы, были ли какие-либо из исходных данных повреждены. Подобный контрольному биту, но с байтами.

3
ответ дан Steven Robbins 24 November 2019 в 03:42
поделиться

Я склонен использовать контрольную сумму слова при обращении к коду (числовой или иначе) созданный для файла или части данных, которые могут привыкнуть к проверка , что файл или данные не были повреждены. Наиболее распространенное использование, с которым я сталкиваюсь, должно проверить, что файлы, отправленные по сети, не были изменены (сознательно или иначе).

1
ответ дан Ian1971 24 November 2019 в 03:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: