PHP md5 объяснил

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

6
задан Matt Elhotiby 17 August 2010 в 17:48
поделиться

7 ответов

md5 - это функция хеширования

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

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

7
ответ дан 8 December 2019 в 15:58
поделиться

MD5 - хэш одностороннего шифрования .

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

4
ответ дан 8 December 2019 в 15:58
поделиться

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

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

2
ответ дан 8 December 2019 в 15:58
поделиться

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

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

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

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

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

1
ответ дан 8 December 2019 в 15:58
поделиться

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

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

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

1
ответ дан 8 December 2019 в 15:58
поделиться

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

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

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

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

0
ответ дан 8 December 2019 в 15:58
поделиться

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

Сила хэш-функции зависит от сложности ее реверсирования.

0
ответ дан 8 December 2019 в 15:58
поделиться
Другие вопросы по тегам:

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