Хеш означает отношение 1 к 1 между данными. Это распространенный тип данных в языках, хотя иногда его называют словарь. Алгоритм хеширования - это способ получить вход и всегда иметь один и тот же выход, иначе известный как функция 1: 1. Идеальная хеш-функция - это когда один и тот же процесс всегда дает уникальный результат. Таким образом, вы можете сказать кому-нибудь, вот файл, а вот его хэш md5. Если файл был поврежден во время, хеш md5 будет иметь другое значение.
На практике хеш-функция всегда будет выдавать значение одного и того же размера, например, md5 () всегда будет возвращать 128 битов независимо от размера ввода. Это делает отношения 1 к 1 невозможными. Криптографическая хэш-функция принимает дополнительные меры предосторожности, затрудняя создание 2 разных входов с одинаковым выходом, это называется коллизией. Это также затрудняет реверсирование функции. Хэш-функции используются для хранения паролей, потому что если злоумышленник получит хеш пароля, он заставит злоумышленника разорвать хэш, прежде чем он сможет использовать его для входа в систему. Чтобы разбить хеш-атаки, потребуется список слов или словарь английского языка и найти все соответствующие хеш-значения, а затем выполнить итерацию по списку для каждого пароля в поисках совпадения.
md5 (), sha0 и sha1 () все уязвимы для атак хеш-коллизий и никогда не должны использоваться для каких-либо связанных с безопасностью действий. Вместо этого следует использовать любого члена семейства sha-2, такого как sha-256.