Введение в хеширование в PHP?
Прежде чем понять концепцию хеширования в PHP, давайте разберемся, что такое хеширование?
Хеширование - это преобразование набора символов в значение или ключ фиксированной длины, представляющие исходную строку. Хеширование также используется в базе данных для индексации и извлечения элементов, поскольку найти элемент с помощью более коротких ключей хеширования легче и быстрее, чем найти его с исходным значением. Он также используется во многих алгоритмах шифрования с точки зрения бизнеса.
В PHP хеширующие функции и алгоритмы используются для шифрования данных, так что поиск становится проще и быстрее, чем исходное значение. Хеш-функции используются для упрощения процесса, так как он индексирует исходное значение и используется каждый раз, когда это требуется. Это всегда односторонняя операция. Хорошая хеш-функция не должна давать одинаковые выходные данные или хеш-значения для двух или многих различных вводимых пользователем данных. Если хеш-функция выдает одинаковые выходные данные для двух разных входов, этот процесс называется коллизией.
Как работает хеширующая функция и ее синтаксис?
PHP является языком программирования на стороне сервера, и его основная роль заключается в том, что он должен обрабатывать функциональные возможности сервера, необходимые для конкретного приложения. В этом процессе аутентификация играет жизненно важную роль, поскольку уязвимости могут легко использовать данные. Одним из способов защиты данных является сохранение их в базе данных в их первоначальном виде, но это может привести к ситуации, когда злоумышленник / неавторизованный человек может легко получить данные и подвергнуть их риску. С этой ситуацией можно легко справиться, используя функции хеширования.
Хеш-функции шифруют данные в их истинной форме, следовательно, не меняя их значения. Таким образом, когда пользователь вводит данные в их истинной форме, данные будут зашифрованы в бэкэнде, и, таким образом, происходит аутентификация и авторизация процесса обработки данных. Наиболее часто используемые алгоритмы хеширования - это md5 (), sha1 () и несколько хеш-функций. Эти алгоритмы используются разработчиком для проверки подлинности введенных пользователем данных или нет, чтобы продолжить процесс.
1. MD5 ()
Этот алгоритм является одним из мощных алгоритмов хеширования, который вычисляет хэш md5, т. Е. Хеш из 16 или 32-значного шестнадцатеричного числа конкретной строки. Эта переданная строка будет преобразована в зашифрованную шестнадцатеричную форму.
Синтаксис: строка md5 ($ string, $ getRawOutput)
Приведенный выше синтаксис указывает строку $ как строку ввода. Необработанный вывод является необязательным входом, поскольку разработчик хочет преобразовать его в 16-битный или 32-битный. Если нужно включить 16 бит, то он должен быть установлен в TRUE Boolean и передан функции. Если он не установлен, то автоматически устанавливается 32-битное значение по умолчанию.
Пример: md5 (EduCBA, TRUE)
2. SHA1 ()
Этот алгоритм является одним из мощных алгоритмов хеширования, который вычисляет хэш sha1, то есть хэш двоичного формата из 20 символов или шестнадцатеричное число из 40 символов конкретной строки. Эта переданная строка будет преобразована в зашифрованную шестнадцатеричную форму.
Синтаксис: строка sha1 ($ string, $ getRawOutput)
Приведенный выше синтаксис указывает строку $ как строку ввода. Необработанный вывод является необязательным входом, поскольку разработчик хочет, чтобы он был 20-битным или 40-битным. Если нужно включить 20 бит, то он должен быть установлен в TRUE Boolean и передан функции. Если он не установлен, то автоматически устанавливается значение 40 бит по умолчанию.
Пример: sha1 (EduCBA, TRUE)
Функция хеширования в PHP
Ниже перечислены несколько хеш-функций, используемых в PHP для шифрования / преобразования данных из оригинальной в хешированную форму.
1. Hash_equals
Эта функция сравнивает две строки одновременно, независимо от того, равны они или нет. Эта функция возвращает TRUE, если строки равны, и FALSE, если строки не равны. Оба аргумента должны быть одинаковыми для сравнения строк, иначе он немедленно вернет false, даже не сравнивая строки в алфавитном порядке, и иногда длина строки также может быть выявлена в случае атаки по времени.
2. Hash_final
Эта функция возвращает хэш-дайджест входной строки, переданной этой функции. Если для необработанного вывода задано значение ИСТИНА, то оно дает необработанные двоичные данные, а когда оно установлено в значение ЛОЖЬ, то шестнадцатеричное число в нижнем регистре Эта функция возвращает вычисленный шестнадцатеричный дайджест строки в качестве вывода.
3. Hash_init
Эта функция используется вместе с алгоритмами хеширования, т. Е. Md5 (), sha () и т. Д. Эта функция вместе с алгоритмами хеширования создает выходные данные для использования с hash_update (), финальным хешем () и т. Д. Выходные данные hash_init сохраняются в строке или переменной и передается в любую из функций.
4. Hash_copy
Эта функция используется для копирования контекста хеширования. Строка, переданная в качестве входных данных для функции, хэшируется одним из алгоритмов, используемых в функции hash_init (), и соответствующий вывод будет хеш-строкой, которая передается в эту функцию. Эта функция возвращает хешированную форму вывода, заданного функцией hash_init.
Примеры хеширования в PHP
Ниже приведен список функций хеширования в PHP, подробно объясненных:
Пример № 1
Код:
<_?php$c = hash_init("md5");
hash_update($c, "content");
$copy_c = hash_copy($c);
echo hash_final($c);
hash_update($copy_c, "content");
echo hash_final($copy_c), "\n";
?>
Выход:
Пример № 2
Код:
<_?php$expected = crypt('leela123', '$2a$07$user$');
$right = crypt('leela123', '$2a$07$user$');
$wrong = crypt('leeeela233', '$2a$07$usedwrongstring$');
var_dump(hash_equals($expected, $right));
var_dump(hash_equals($expected, $wrong));
?>
Выход:
Пример № 3
Код:
<_?php$hash = hash_init('sha1');
hash_update($hash, 'This is an example of PHP Hash function');
echo hash_final($hash);
?>
Выход:
Вывод
В этой статье мы обсудили, что такое хеширование и его различные алгоритмы. Кроме того, мы обсудили несколько функций хеширования, используемых в PHP для шифрования данных для предотвращения злонамеренных и уязвимых атак. Из-за этих атак данные не защищены и происходит потеря данных. Итак, техника хэширования была введена так, чтобы не было потери данных и она была защищена различными атаками.
Рекомендуемые статьи
Это руководство по функции хеширования в PHP. Здесь мы обсуждаем его работу, синтаксис и 4 лучших хеш-функции в PHP с примерами и реализацией кода. Вы также можете посмотреть следующие статьи, чтобы узнать больше
- Типы функций в PHP с примерами
- Как проверить палиндром в PHP?
- Сортировка ассоциативного массива в PHP
- Как конвертировать формат даты в PHP?