Úvod do Hashing Function v PHP?

Než porozumíme pojmu hashovací funkce v PHP, pojďme pochopit, co je hashování?

Hashing je transformace sady znaků na pevnou délku nebo klíč, který představuje původní řetězec. Hashing se v databázi používá také k indexování a načítání položek, protože je rychlejší a snazší najít položku pomocí kratších hashovacích klíčů, než najít ji s původní hodnotou. Používá se také v mnoha šifrovacích algoritmech z obchodního hlediska.

V PHP se pro šifrování dat používají hashovací funkce a algoritmy, takže vyhledávání je snazší a rychlejší než původní hodnota. Funkce hash se používají k usnadnění procesu, protože indexuje původní hodnotu a používá se pokaždé, když je to potřeba. Je to vždy jednosměrná operace. Dobrá hashovací funkce by neměla produkovat stejný výstup nebo hash hodnotu pro dva nebo více různých vstupů zadaných uživatelem. Pokud hashovací funkce produkuje stejný výstup pro dva různé vstupy, je tento proces znám jako kolize.

Jak funguje hasicí funkce a její syntaxe?

PHP je programovací jazyk na straně serveru a jeho hlavní rolí je, že musí zpracovat back-end funkce potřebné pro konkrétní aplikaci. V tomto procesu hraje ověřování zásadní roli, protože zranitelnosti mohou data snadno využívat. Jedním ze způsobů, jak zabezpečit data, je uložit je do databáze v původní podobě, ale to by mohlo vést k situaci, kdy by vetřelec / neoprávněná osoba mohla data snadno vzít a mohla by být ohrožena. Tuto situaci lze snadno vyřešit pomocí funkcí Hashing.

Hašovací funkce šifrují data v jejich skutečné podobě, aniž by se měnil jejich význam. Když tedy uživatel zadá data ve své skutečné podobě, data se v backendu zašifrují a tak dojde k autentizaci a autorizaci datového procesu. Nejběžněji používané hashovací algoritmy jsou md5 (), sha1 () a několik hashovacích funkcí. Tyto algoritmy jsou používány vývojářem k ověření, že data zadaná uživatelem jsou správná nebo nepostupují dále v procesu.

1. MD5 ()

Tento algoritmus je jedním z výkonných hashovacích algoritmů, které počítají hash md5, tj. Hash 16 nebo 32 znakového hexadecimálního čísla určitého řetězce. Tento předaný řetězec bude převeden do zašifrované hexadecimální formy.

Syntaxe: string md5 ($ string, $ getRawOutput)

Výše uvedená syntaxe označila řetězec $ jako vstupní řetězec. Nezpracovaný výstup je volitelný vstup, protože jej vývojář chce převést na 16 nebo 32 bitů. Pokud 16 bit musí povolit, musí být nastaven na TRUE Boolean a předán funkci. Pokud není nastavena, je automaticky nastavena výchozí hodnota 32 bitů.

Příklad: md5 (EduCBA, TRUE)

2. SHA1 ()

Tento algoritmus je jedním z výkonných hashovacích algoritmů, které počítají hash sha1, tj. Hash 20 znakového binárního formátu nebo 40 znakového hexadecimálního čísla určitého řetězce. Tento předaný řetězec bude převeden do zašifrované hexadecimální formy.

Syntaxe: string sha1 ($ string, $ getRawOutput)

Výše uvedená syntaxe označila řetězec $ jako vstupní řetězec. Nezpracovaný výstup je volitelný vstup, protože vývojář chce mít 20 nebo 40 bitů. Pokud má 20 bit povolit, musí být nastaven na PRAVDA Boolean a předán funkci. Pokud není nastavena, je automaticky nastavena výchozí hodnota 40 bitů.

Příklad: sha1 (EduCBA, TRUE)

Hashing Function v PHP

Níže je uvedeno několik hashovacích funkcí používaných v PHP k šifrování / převodu dat z původní do hašované podoby.

1. Hash_equals

Tato funkce porovnává dva řetězce současně, zda jsou stejné nebo ne. Tato funkce vrací PRAVDA, když jsou řetězce stejné, a FALSE, pokud nejsou řetězce stejné. Oba argumenty by měly být stejné pro porovnání řetězců, jinak se okamžitě vrátí nepravdivé, aniž by se řetězce shodovaly abecedně a někdy může být délka řetězce také odhalena v případě útoku načasování.

2. Hash_final

Tato funkce vrací hash hash vstupního řetězce předaného této funkci. Když je surový výstup nastaven na PRAVDA, pak poskytuje surová binární data a když je nastavena na NEPRAVDA, dává malé hexadecimální číslo. Tato funkce vrátí vypočítaný hexadecimální výtah řetězce jako výstup.

3. Hash_init

Tato funkce se používá spolu s hashovacími algoritmy, tj. Md5 (), sha () atd. Tato funkce spolu s hashovacími algoritmy vytváří výstup pro použití s ​​hash_update (), hash final () atd. Výstup hash_init je uložen v řetězci nebo proměnné a předán kterékoli z funkcí.

4. Hash_copy

Tato funkce se používá ke kopírování hašovacího kontextu. Řetězec předávaný jako vstup do funkce je hashován jedním z algoritmů použitých ve funkci hash_init () a odpovídajícím výstupem by byl hashovaný řetězec, který je předán této funkci. Tato funkce vrací hašovanou formu výstupu danou funkcí hash_init.

Příklady funkce hashování v PHP

Následuje podrobný popis hashovací funkce v PHP,

Příklad č. 1

Kód:

<_?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";
?>

Výstup:

Příklad č. 2

Kód:

<_?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));
?>

Výstup:

Příklad č. 3

Kód:

<_?php
$hash = hash_init('sha1');
hash_update($hash, 'This is an example of PHP Hash function');
echo hash_final($hash);
?>

Výstup:

Závěr

V tomto článku jsme diskutovali, co je hašování a jeho různé algoritmy. Také jsme diskutovali o několika hašovacích funkcích používaných v PHP k šifrování dat, aby se zabránilo škodlivým a zranitelným útokům. Kvůli těmto útokům nejsou data bezpečná a dochází ke ztrátě dat. Proto byla zavedena hašovací technika tak, aby nedošlo ke ztrátě dat a bude zajištěna různými útoky.

Doporučené články

Toto je průvodce funkcí Hashing v PHP. Zde diskutujeme jeho pracovní, syntaktickou a top 4 hashovací funkci v PHP s příklady a implementací kódu. Další informace naleznete také v následujících článcích

  1. Typy funkcí v PHP s příklady
  2. Jak zkontrolovat palindrom v PHP?
  3. Třídění asociativního pole v PHP
  4. Jak převést formát data v PHP?

Kategorie: