Вступ до функції хешування в PHP?
Перш ніж зрозуміти поняття хеш-функції в PHP, давайте розберемося, що таке хешування?
Хешинг - це перетворення набору символів у значення фіксованої довжини або ключ, який представляє початковий рядок. Хешинг використовується в базі даних, а також для індексації та отримання елементів, тому що знайти предмет стає швидше і простіше за допомогою коротших хешованих клавіш, ніж пошук з початковим значенням. Він також використовується у багатьох алгоритмах шифрування з точки зору бізнесу.
У PHP використовуються хеш-функції та алгоритми для шифрування даних, завдяки чому пошук стає простішим та швидшим, ніж вихідне значення. Хеш-функції використовуються для полегшення процесу, оскільки він індексує початкове значення, і він використовується щоразу, коли це потрібно. Це завжди одностороння операція. Хороша хеш-функція не повинна створювати однакове значення виводу або хеша для двох або багатьох різних входів, введених користувачем. Якщо хеш-функція виробляє однаковий вихід для двох різних входів, цей процес відомий як зіткнення.
Як працює функція хешування та її синтаксис?
PHP - це серверна мова програмування, і його основна роль полягає в тому, щоб вона обробляла функціональні можливості, необхідні для конкретного додатка. У цьому процесі аутентифікація відіграє важливу роль, оскільки вразливості можуть легко експлуатувати дані. Один із способів захисту даних - це зберігання їх у базі даних у первісному вигляді, але це може призвести до ситуації, коли зловмисник / несанкціонована особа може легко взяти дані, і це може бути порушено. З цією ситуацією можна легко впоратися за допомогою функцій Hashing.
Функції хешу шифрують дані в їх справжньому вигляді, не змінюючи їх значення. Таким чином, коли користувач вводить дані в їх справжньому вигляді, дані будуть зашифровані в заднім часі, і таким чином відбувається аутентифікація та авторизація процесу обробки даних. Найчастіше використовуються хеш-алгоритми - md5 (), sha1 () та кілька хеш-функцій. Ці алгоритми використовуються розробником для перевірки автентичності даних, введених користувачем, правильно чи не для подальшого продовження процесу.
1. MD5 ()
Цей алгоритм є одним з потужних алгоритмів хешування, який обчислює хед md5, тобто хеш 16-ти або 32-символьних шістнадцяткових чисел певного рядка. Цей пройдений рядок буде перетворений у зашифровану шістнадцяткову форму.
Синтаксис: рядок md5 ($ string, $ getRawOutput)
Вищевказаний синтаксис вказав рядок $ як вхідний рядок. Невизначений вихід - необов'язковий вхід, оскільки розробник хоче перетворити його на 16 або 32 біт. Якщо 16 біт повинен увімкнути його, потрібно встановити TRUE Boolean і передати його функції. Якщо він не встановлений, то 32-бітове значення за замовчуванням встановлюється автоматично.
Приклад: md5 (EduCBA, TRUE)
2. SHA1 ()
Цей алгоритм є одним з потужних алгоритмів хешування, який обчислює хеш sha1, тобто хеш у 20-ти символьному двійковому форматі або шістнадцятковий номер 40 символів певного рядка. Цей пройдений рядок буде перетворений у зашифровану шістнадцяткову форму.
Синтаксис: string sha1 ($ string, $ getRawOutput)
Вищевказаний синтаксис вказав рядок $ як вхідний рядок. Вихідний вихід - необов'язковий вхід, оскільки розробник хоче, щоб він був 20-ти або 40-бітовим. Якщо 20 біт повинен увімкнути його, потрібно встановити TRUE Boolean і передати його функції. Якщо він не встановлений, то за замовчуванням 40 біт встановлюється автоматично.
Приклад: sha1 (EduCBA, TRUE)
Функція хешування в PHP
Нижче перераховано декілька хеш-функцій, які використовуються в PHP для шифрування / перетворення даних з оригінальної у хешовану форму.
1. Hash_equals
Ця функція порівнює два рядки одночасно, чи вони рівні, чи ні. Ця функція повертає TRUE, коли рядки рівні, і FALSE, якщо рядки не рівні. Обидва аргументи повинні бути однаковими для порівняння рядків, інакше він негайно поверне помилковий, навіть не порівнюючи рядки в алфавітному порядку, а іноді довжина рядка також може бути виявлена у разі нападу на час.
2. Хеш_фінал
Ця функція повертає хеш-дайджест вхідного рядка, переданого цій функції. Якщо вихідний вихідний параметр встановлений на ІСТИНУ, то він видає необроблені двійкові дані, а коли він задається значення FALSE, він дає нижнє шістнадцяткове число. Ця функція повертає обчислений шістнадцятковий дайджест рядка як вихід.
3. Hash_init
Ця функція використовується разом з алгоритмами хешування, тобто md5 (), sha () тощо. Ця функція разом з алгоритмами хешування дає результат для використання з hash_update (), хеш-фінал () і т.д. Вихід хеш_ініта зберігається в рядку або змінній і передається будь-якій з функцій.
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?