PHP md5 объяснил

Я работаю над этим проектом PHP, и у меня есть много мест, в которых используется md5. Я даже использовал его много раз, но сегодня я не понимаю, что делает функция. Я понимаю, что он расшифровывает переданное значение, но как его отменить, чтобы вернуть его к оригиналу. Может быть, я не совсем понимаю весь процесс, и если у кого-то есть информация о процессе, я бы очень признателен

md5 – функция хеширования

Он работает только в одном направлении.

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

MD5 – это односторонний хэш шифрования .

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

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

Таким образом, нет возможности фактически «расшифровать» строку MD5. Что вы делаете, вы генерируете его из некоторых данных, затем генерируете его из некоторых других данных и сравниваете две строки MD5. Если они одинаковы, вы можете быть совершенно уверены (хотя и не на 100%), что эти два входных данных идентичны.

MD5 ничего не расшифровывает. Он считается односторонним алгоритмом хэширования. Для данного ввода возвращается строка с фиксированной длиной. Кроме того, для двух заданных входов, которые довольно похожи, но не идентичны, возвращаемое значение md5 не будет предсказуемым.

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

Другим примером может быть такое, как аутентификация на сайте. После аутентификации пользователя вы начинаете сеанс, и в этом сеансе вы храните md5 (имя пользователя + время), а также сохраняете куки-файлы в браузере пользователей md5 (имя пользователя + время), а затем на последующих запросах страницы вы можете проверить, что хеш сеанса соответствует cookie hash, чтобы утверждать, что пользователь – это тот, кто они говорят. Md5 не является хорошим хешем для этого типа вещей, но хэширование вообще может помочь в таких ситуациях. sha1 будет лучшей функцией хэширования для этого приложения или даже sha512.

MD5 – это криптографическая хэш-функция. Криптографические хеш-функции имеют специальное свойство, что они генерируют результат на основе ввода, но восстановить исходный вход практически невозможно. Это своего рода «одностороннее шифрование». Кроме того, передавая одни и те же данные с помощью криптографической хэш-функции, вы всегда должны получать одинаковый результат.

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

Обратите внимание, что MD5 не очень безопасен, вы должны попытаться использовать другую более безопасную хеширующую функцию, например SHA512:

 <?php $hash = hash('sha512', $data); ?> 

Полезные ссылки:

См. http://en.wikipedia.org/wiki/Hash_function .

Сила хеш-функции зависит от ее трудности в обратном направлении.

Он генерирует односторонний хэш входных данных, используя алгоритм md5

Некоторые ссылки:

http://en.wikipedia.org/wiki/MD5

http://en.wikipedia.org/wiki/Cryptographic_hash_function