Úvod do funkcie hashovania v PHP?

Predtým, ako pochopíme pojem hashovacej funkcie v PHP, pochopme, čo je hashovanie?

Hashing je transformácia množiny znakov na hodnotu alebo kľúč s pevnou dĺžkou, ktorý predstavuje pôvodný reťazec. Hashing sa používa aj v databáze na indexovanie a načítanie položiek, pretože je rýchlejšie a ľahšie nájsť položku pomocou kratších hashovacích kľúčov, ako nájsť ju s pôvodnou hodnotou. Používa sa tiež v mnohých šifrovacích algoritmoch z obchodného hľadiska.

V PHP sa na šifrovanie údajov používajú hashovacie funkcie a algoritmy, takže vyhľadávanie sa stáva ľahšie a rýchlejšie ako pôvodná hodnota. Hašovacie funkcie sa používajú na uľahčenie procesu, pretože indexuje pôvodnú hodnotu a používa sa vždy, keď je to potrebné. Je to vždy jednosmerná operácia. Dobrá funkcia hash by nemala produkovať rovnaký výstup alebo hodnotu hash pre dva alebo viac rôznych vstupov zadaných používateľom. Ak funkcia hash produkuje rovnaký výstup pre dva rôzne vstupy, tento proces sa nazýva kolízia.

Ako funguje funkcia hashovania a jej syntax?

PHP je programovací jazyk na strane servera a jeho hlavnou úlohou je spracovať back-end funkcie potrebné pre konkrétnu aplikáciu. V tomto procese hrá autentifikácia dôležitú úlohu, pretože zraniteľné miesta môžu údaje ľahko využívať. Jedným zo spôsobov zabezpečenia údajov je ich uloženie do databázy v pôvodnej podobe, ale to by mohlo viesť k situácii, keď narušiteľ / neoprávnená osoba môže údaje ľahko vziať a môže byť ohrozená. Túto situáciu je možné ľahko vyriešiť pomocou funkcií Hashing.

Hašovacie funkcie šifrujú údaje v ich skutočnej podobe, a teda bez toho, aby sa menil ich význam. Keď teda užívateľ zadá údaje v jeho skutočnej podobe, údaje sa v backende zašifrujú a tak dôjde k autentifikácii a autorizácii dátového procesu. Najbežnejšie používané algoritmy hash sú md5 (), sha1 () a niekoľko hashovacích funkcií. Tieto algoritmy používa vývojár na autentifikáciu údajov zadaných používateľom, či sú správne alebo nepostupujú ďalej v procese.

1. MD5 ()

Tento algoritmus je jedným z výkonných hashovacích algoritmov, ktoré vypočítavajú hash md5, tj hash 16 alebo 32-znakového hexadecimálneho čísla konkrétneho reťazca. Prešiel tento reťazec do zašifrovanej hexadecimálnej formy.

Syntax: string md5 ($ string, $ getRawOutput)

Vyššie uvedená syntax označila reťazec $ ako vstupný reťazec. Surový výstup je voliteľný vstup, pretože ho vývojár chce previesť na 16 alebo 32 bitov. Ak musí 16 bit povoliť, musí byť nastavený na TRUE Boolean a odovzdaný do funkcie. Ak nie je nastavený, automaticky sa nastaví predvolená hodnota 32 bitov.

Príklad: md5 (EduCBA, TRUE)

2. SHA1 ()

Tento algoritmus je jedným z výkonných hashovacích algoritmov, ktoré vypočítavajú hash shal, tj hash 20-znakového binárneho formátu alebo 40-znakového hexadecimálneho čísla konkrétneho reťazca. Prešiel tento reťazec do zašifrovanej hexadecimálnej formy.

Syntax: string sha1 ($ string, $ getRawOutput)

Vyššie uvedená syntax označila reťazec $ ako vstupný reťazec. Surový výstup je voliteľný vstup, pretože vývojár chce mať 20 alebo 40 bitov. Ak má povoliť 20 bitov, musí byť nastavený na TRUE Boolean a odovzdaný do funkcie. Ak nie je nastavený, automaticky sa nastaví predvolená hodnota 40 bitov.

Príklad: sha1 (EduCBA, TRUE)

Hashing funkcia v PHP

Nižšie je uvedených niekoľko hashovacích funkcií používaných v PHP na šifrovanie / konverziu údajov z pôvodnej do hashovanej formy.

1. Hash_equals

Táto funkcia porovnáva dva reťazce súčasne, či sú rovnaké alebo nie. Táto funkcia vráti hodnotu PRAVDA, keď sú reťazce rovnaké, a FALSE, ak sa reťazce nezhodujú. Obidva argumenty by mali byť rovnaké na porovnanie reťazcov, inak okamžite vráti falošné hodnoty bez toho, aby porovnal reťazce podľa abecedy a niekedy môže byť odhalená aj dĺžka reťazca v prípade útoku načasovania.

2. Hash_final

Táto funkcia vráti hash vstupného reťazca odovzdaného do tejto funkcie. Keď je surový výstup nastavený na hodnotu PRAVDA, potom poskytuje surové binárne údaje a keď je nastavený na hodnotu FALSE, zadáva malé hexadecimálne číslo. Táto funkcia vráti vypočítaný hexadecimálny prehľad reťazca ako výstup.

3. Hash_init

Táto funkcia sa používa spolu s hashovacími algoritmami, tj md5 (), sha () atď. Táto funkcia spolu s hashovacími algoritmami vytvára výstup na použitie s hash_update (), hash final () atď. Výstup hash_init je uložený v reťazci alebo premennej a odovzdaný ktorejkoľvek z funkcií.

4. Hash_copy

Táto funkcia sa používa na kopírovanie hašovacieho kontextu. Reťazec odovzdaný ako vstup do funkcie je hashovaný jedným z algoritmov použitých vo funkcii hash_init () a zodpovedajúcim výstupom by bol hashovaný reťazec, ktorý sa odovzdáva tejto funkcii. Táto funkcia vráti hashovanú formu výstupu danú funkciou hash_init.

Príklady funkcie hashovania v PHP

Nasleduje zoznam hashovacej funkcie v PHP podrobne vysvetlený,

Prí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ýkon:

Prí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ýkon:

Prí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ýkon:

záver

V tomto článku sme diskutovali, čo je hashovanie a jeho rôzne algoritmy. Diskutovali sme tiež o niekoľkých hašovacích funkciách používaných v PHP na šifrovanie údajov, aby sa zabránilo škodlivým a zraniteľným útokom. Z dôvodu týchto útokov nie sú údaje bezpečné a dochádza k strate údajov. Technika hashovania bola zavedená tak, aby nedošlo k strate údajov a bola zabezpečená rôznymi útokmi.

Odporúčané články

Toto je sprievodca funkciou hashovania v PHP. Tu diskutujeme jeho funkčnosť, syntax a top 4 hashovacie funkcie v PHP s príkladmi a implementáciou kódu. Viac informácií nájdete aj v nasledujúcich článkoch

  1. Typy funkcií v PHP s príkladmi
  2. Ako skontrolovať palindróm v PHP?
  3. Triedenie asociatívneho poľa v PHP
  4. Ako previesť formát dátumu v PHP?

Kategórie: