Генерация хэша MD5 в PHP
В этом руководстве мы покажем вам, как можно сгенерировать хэш MD5 строки в PHP.
Прежде чем мы начнем, не используйте MD5 при создании хэшей для чего-либо, связанного с безопасностью, включая пароли. Это связано с тем, что хеши MD5 могут генерироваться невероятно быстро в современных системах и больше не считаются криптографически безопасными.
Хотя MD5 больше не полезен для безопасности, он по-прежнему используется в PHP. Хотя быстрый хэш обычно ужасен по соображениям безопасности, он все же может быть полезен во многих других случаях.
Одним из таких применений является проверка подлинности файла. Например, изменение хэша указывает на то, что содержимое файла не идентично.
Некоторые общедоступные службы даже используют хэш MD5 как способ передачи строки, которая должна быть в некоторой степени приватной, но не обязательно безопасной. Прекрасным примером одного из таких сервисов является популярная глобальная система аватаров Gravatar.
Служба аватаров Gravatar использует MD5 адреса электронной почты пользователя, чтобы предоставить аватар для этого конкретного пользователя. Это обеспечивает определенный уровень запутывания и означает, что адрес электронной почты пользователя не нужно указывать в URL-адресе.
Другой пример, где MD5 по-прежнему используется по умолчанию, — это прокси-кеш NGINX. Он использует MD5 для создания уникального ключа кэша для этого запроса.
В следующем разделе мы покажем вам, как можно сгенерировать хэш MD5 в PHP.
Функция md5() в PHP
Функция md5() в PHP невероятно проста в использовании. У него есть только два параметра, о которых вам нужно беспокоиться, и если вам не нужны двоичные данные, второй совершенно необязателен.
Если вы хотите сгенерировать хэш файла MD5, существует другая функция, которая называется « md5_file()
», о котором мы поговорим позже.
Ниже вы можете увидеть синтаксис функции md5()
в PHP.
В первом параметре ( $string
) вы указываете данные, для которых вы хотите, чтобы PHP генерировал хэш MD5. Эти данные должны быть переданы в виде строки PHP.
Второй параметр ( $binary
) позволяет вам контролировать, будет ли возвращаться хэш в виде 32-символьной шестнадцатеричной строки ( false
) или будет ли возвращаться необработанный 16-битный двоичный файл ( верно
). Этот параметр является необязательным и в большинстве случаев не требуется.
Пример возврата шестнадцатеричной строки MD5 в PHP
В этом примере мы будем использовать PHP для генерации хэша MD5 строки « Hello PiMyLIfeUp Viewer
». Поскольку нам нужен шестнадцатеричный формат, все, что нам нужно сделать, это передать эту строку в первом параметре.
Чтобы показать вам сгенерированный хэш, мы используем встроенную в PHP функцию эха для вывода результата.
Используя этот небольшой фрагмент кода, вы должны получить следующий хеш. Пока вы используете одну и ту же строку, они всегда должны оставаться одинаковыми.
Пример получения двоичного формата MD5
Как и в предыдущем примере, мы снова будем использовать MD5 для генерации хэша.
Мы будем использовать ту же строку « Hello PiMyLifeUpViewer
», но на этот раз мы также включим формат « двоичный », передав « true
» второму параметру.
Если установить для второго параметра значение true, функция PHP md5()
вернет хэш в виде необработанного 16-битного двоичного кода.
После выполнения приведенного выше примера хэш MD5 теперь должен отображаться в двоичном формате. Как показано ниже, это будет выглядеть как странная мешанина символов при отображении непосредственно на экране.
Обычно большинство людей предпочитают использовать шестнадцатеричный формат, а не двоичный.
Генерация MD5-хэша файла в PHP
PHP имеет встроенную функцию, позволяющую легко генерировать MD5-хэш файла. Эта функция называется « md5_file
».
Использование этой функции относительно похоже на базовую функцию md5()
. Однако первый параметр изменился.
Вместо указания строки, которую вы хотите хэшировать, вы укажете путь к файлу, для которого PHP должен сгенерировать хэш MD5.
Определение функции PHP md5_file показано ниже.
В параметре « $filename
» вы должны указать путь к файлу, для которого вы хотите сгенерировать хэш MD5. Помните, что этот путь должен быть либо относительным к текущему расположению файлов PHP, либо быть абсолютным путем.
Параметр $binary
позволяет вам контролировать, возвращает ли PHP хеш в виде 32-символьной шестнадцатеричной строки ( false
) или 16-битного двоичного файла ( true
). По умолчанию установлено значение false
, и оно подходит для большинства случаев использования.
В случае успеха функция md5_file вернет строку, содержащую либо 32-символьную шестнадцатеричную строку, либо 16-битную двоичную. Это зависит от того, что вы установили для параметра « $binary
».
В случае ошибки PHP вернет логическое значение false
. Сбой обычно происходит, когда PHP не может получить доступ к указанному файлу.
Пример создания хэша MD5 файла с использованием шестнадцатеричного формата
В этом примере мы будем использовать PHP для создания хэша MD5 нашего файла « index.html
», который находится рядом с нашим скриптом PHP. Мы сохраним это имя файла в переменной с именем « $file
».
Затем мы используем функцию md5_file, передавая путь к нашему файлу, хранящемуся в « $file
” в первый параметр.
Хэш файла MD5 будет напечатан PHP на выходе благодаря ключевому слову echo.
После запуска этого кода PHP сгенерирует хэш для файла, расположенного в том же каталоге, что и « index.html
».
Будет выведен хэш MD5, сгенерированный PHP. Для нашего примера файла мы получили следующий 32-символьный шестнадцатеричный хеш.
Пример получения хэша MD5 файла с использованием двоичного формата
В этом примере мы сгенерируем хэш MD5 для нашего файла и выведем его в двоичном формате.
Начните этот пример с создания переменной с именем « $file
» и присвоения ей пути к вашему файлу. В нашем случае мы будем использовать « index.html
», который находится рядом с нашим тестовым скриптом PHP.
Наконец, мы вызываем функцию md5_file()
. В первый параметр мы передаем переменную, содержащую путь к нашему файлу.
Второму параметру мы установили значение true
. Установив для второго параметра значение true, мы указываем md5_file() выводить хэш в двоичном формате вместо шестнадцатеричного.
Будет выведен результат этого хеша. Поскольку это двоичный формат, полученный хеш может выглядеть как странная смесь символов при отображении на экране.
Ниже приведен пример двоичного вывода для нашего примера файла. Вы, вероятно, захотите придерживаться шестнадцатеричной строки для большинства случаев использования.
Заключение
В этом руководстве мы показали вам, как сгенерировать хэш MD5 в PHP. Хотя MD5 в основном бесполезен для безопасности, он все же имеет различные варианты использования.
В PHP встроены две функции, которые позволяют быстро генерировать хэш MD5 для строки или файла.
Пожалуйста, прокомментируйте ниже, если у вас возникли проблемы с использованием любой из этих функций.
Обязательно ознакомьтесь со многими другими нашими руководствами по PHP и другими нашими руководствами по программированию.
PHP md5 в JavaScript | Locutus
|
Вы можете установить через npm install locutus
и
потребовать его через require('locutus/php/strings/md5')
strings
чтобы вместо этого вы могли получить доступ к strings.md5
.Если вы собираетесь настроить таргетинг на браузер, вы можете использовать сборщик модулей, например Посылка, вебпак, Просмотр или свернуть.js. Это может быть важно, поскольку Locutus позволяет использовать современный JavaScript в исходные файлы, что означает, что он может работать не во всех браузерах без шаг сборки/транспиляции. Locutus транспилирует все функции в ES5 перед публикацией в npm.
В отличие от Википедии, Locutus является постоянной работой сообщества. Наша философия следует Теория Макдональдса.