Хеширование и шифрование – это те самые два слова, которые часто используются взаимозаменяемо, но порой неправильно.
Вы понимаете различие между этими двумя словами и ситуации, в которых вы должны использовать один из двух случаев?
В сегодняшнем посту я разберу основные отличия между хешированием и шифрованием , а также когда и для чего каждый из них применяется.
Хеширование – Что это?
Хэш – значение или число, сгенерированное из последовательности текста.
Получающаяся строчка или число фиксированной длины будут значительно различаться в зависимости от незначительных изменений на входе.
Лучшие алгоритмы хеширования разработаны так, чтобы было невозможно возвратить хэш в свою оригинальную последовательность.
Популярные алгоритмы
MD5. MD5 – наиболее широко известная функция хеширования.
Этот алгоритм производит 16-битное значение хэша, обычно выражаемую 32 значным шестнадцатеричным числом.
Недавно несколько слабых мест были обнаружены в MD5 и радужные таблицы были изданы [ большие и общедоступные ], которые в свою очередь позволяли людям полностью изменять хэш MD5. Поэтому данный алгоритм считается несколько устаревшим. Так же можно отметить значительное число коллизий.
SHA – есть три различных алгоритма SHA – SHA-0, SHA-1 и SHA-2.
SHA-0 очень редко используется, поскольку он имел уязвимость, которая была исправлена в SHA-1.
SHA-1 – обычный используемый алгоритм SHA и производит 20-битное значение хэша.
SHA-2 состоит из ряда 6 алгоритмов хеширования и считается самым сильным.
SHA-256 или выше рекомендуется для ситуаций, где безопасность жизненно важна. SHA-256 производит 32-битные значения хэша.
Когда должно использоваться хэширование?
Хеширование – идеальный способ сохранить пароли, поскольку значения хеша, по сути своей природы, односторонние в своем роде.
Храня пароли в формате хеша, для злоумышленника с доступом к необработанным данным очень трудно инвертировать его (использование сильного алгоритма хеширования, и надлежащий модификатор [ соль в народе ], чтобы сгенерировать его).
При хранении пароля хешируйте его с солью, и затем с любыми будущими попытками входа в систему, хешируйте пароль, который вводит пользователь, и сравните его с сохраненным хешем.
Если эти два хэша совпадают, то фактически бесспорно, что пользователь, вводящий пароль, вводил правильный.
Хеширование – великолепное решение для использования в любом виде, если вы хотите сравнить значение с хранимой суммой, но не можете сохранить ее простое представление из соображений безопасности.
Другой вариант использования заключается в том, что напрмиер можно проверять, что последние несколько цифр кредитной карты совпадают с вводом данных пользователем или сравнением хеша файла, который у нас есть с хешем сохраненного файла в базе данных, чтобы удостовериться, что они идентичны.
Шифрование – Что это?
Шифрование преобразует какие-либо данные в серию нечитабельных людскому глазу знаков, которые не имеют фиксированной длины.
Прежде всего – какой главный принцип шифрования? Правильно – наличие получателя – приемника если позволите.
Основное отличие между шифрованием и хешированием – то, что зашифрованные последовательности могут быть повернуты назад в их оригинальную расшифрованную форму, если конечно соответствующий ключ имеется.
Есть два основных типа шифрования, симметричное шифрования и шифрования на основе открытых ключей.
В симметричном ключевом шифровании ключ,необходимый чтобы и зашифровать и расшифровать является одним и тем же ключом.
Именно так, пожалуй, и думает большинство людей, когда они слышат о шифровании.
У шифрования на основе открытй ключей для сравнения есть два различных ключа, один шифрует последовательность (открытый ключ) и один расшифровывает ее (закрытый ключ).
Открытый ключ доступен для любого пользователя, который хочет зашифровать сообщения, однако только у намеченного получателя есть доступ к частному ключу, а значит и возможность расшифровать сообщения, доселе ему предназначенные.
Популярные алгоритмы
AES. AES – “золотой стандарт”, когда речь заходит о способе симметричного шифрования и рекомендуется для большинства случаев 256 битным размером ключа.
PGP. PGP – самый популярный алгоритм шифрования на основе открытых ключей.
Когда должно использоваться шифрование?
Шифрование должно использоваться, когда существует необходимость расшифровать получаемое сообщение.
Например, если бы вы хотите послать безопасное сообщения кому-то вы должны использовать шифрование вместо хеширования, поскольку сообщение ничего не даст получателю, если он не сможет расшифровать его.
Если сами данные не должны быть известны в начальном виде, то хеширование рекомендуется к использованию в данном случае, поскольку это более безопасно.
Чего, с какой солью хешировать?
А что не понятного?