Я сказал бы, что контрольная сумма обязательно хэш-код . Однако не все хэш-коды делают хорошие контрольные суммы.
контрольная сумма А имеет особое назначение---, она проверяет или проверки целостность данных (некоторые могут пойти кроме того путем обеспечения коррекция ошибок ). "Хорошие" контрольные суммы легко вычислить и могут обнаружить много типов повреждений данных (например, один, два, три бита с ошибкой).
хэш-код А просто описывает математическая функция , которая отображает данные на некоторое значение. Когда используется в качестве средства индексации в структурах данных (например, хэш-таблица), низкая вероятность коллизии желательна.
Существует различная цель позади каждого из них:
На практике, те же функции часто хороши для обеих целей. В частности, криптографически сильный хэш-код является хорошей контрольной суммой (почти невозможно, что случайная ошибка повредит сильную хеш-функцию), если можно предоставить вычислительную стоимость.
Существуют действительно некоторые различия:
Википедия помещает его хорошо:
функции Контрольной суммы связаны с хеш-функциями, цифровыми отпечатками, функциями рандомизации и криптографическими хеш-функциями. Однако каждое из тех понятий имеет различные приложения и поэтому различные цели дизайна. Контрольные разряды и биты четности являются особыми случаями контрольных сумм, подходящих для небольших блоков данных (таких как Номера социального страхования, номера банковских счетов, компьютерные слова, единственные байты, и т.д.). Некоторые коды с коррекцией ошибок основаны на специальных контрольных суммах, которые не только обнаруживают распространенные ошибки, но также и позволяют исходным данным быть восстановленными в определенных случаях.
Хэш-коды и контрольные суммы оба используются для создавания короткой численной стоимости от элемента данных. Различие - то, что значение контрольной суммы должно измениться, даже если маленькая модификация сделана к элементу данных. Для значения хэш-функции требование просто, что реальные элементы данных должны иметь отличные значения хэш-функции.
А ясный пример строки. Контрольная сумма для строки должна включать каждый бит и вопросы порядка. Хэш-код, с другой стороны, может часто реализовываться как контрольная сумма префикса ограниченной длины. Это означало бы, что "aaaaaaaaaaba" хеширует то же как "aaaaaaaaaaab", но хеш-алгоритмы могут иметь дело wth такие коллизии.
В эти дни они interchangable, но в днях былого контрольная сумма была очень простым techique, где Вы сложите все данные (обычно в байтах) и прикрепите байт на конце с тем значением в.. тогда Вы, надо надеяться, знали бы, были ли какие-либо из исходных данных повреждены. Подобный контрольному биту, но с байтами.
Я склонен использовать контрольную сумму слова при обращении к коду (числовой или иначе) созданный для файла или части данных, которые могут привыкнуть к проверка , что файл или данные не были повреждены. Наиболее распространенное использование, с которым я сталкиваюсь, должно проверить, что файлы, отправленные по сети, не были изменены (сознательно или иначе).