Ultimele tutoriale de dezvoltare web
 

PHP crypt() Function


<PHP String Reference

Definiție și utilizare

crypt() Funcția returnează un șir hash folosind algoritmi DES, Blowfish sau MD5.

Această funcție se comportă diferit pe diferite sisteme de operare. PHP verifică ce sunt disponibile algoritmi și ce algoritmi pentru a utiliza atunci când este instalat.

Parametrul de sare este opțională. Cu toate acestea, crypt() creează o parolă slabă , fără sare. Asigurați-vă că pentru a specifica o sare suficient de puternic pentru o mai bună securitate.

Există unele constante care sunt utilizate împreună cu crypt() funcția. Valoarea acestor constante sunt stabilite de PHP atunci când este instalat.

constante:

  • [CRYPT_STD_DES] - Standard DES bazate pe hash cu două caractere de sare din alfabetul "./0-9A-Za-z" . Utilizarea caracterelor nevalide în sare va determina această funcție să nu reușească.
  • [CRYPT_EXT_DES] - Extended hash DES-based cu o sare de nouă caractere constând dintr-o linie de subliniere, urmat de 4 octeți Numărul de repetări și 4 octeți de sare. Acestea sunt codificate ca caracterele imprimabile, 6 biți per caracter, caracterul cel mai puțin semnificativ primul. Valorile de la 0 la 63 sunt codificate ca "./0-9A-Za-z" . Utilizarea caracterelor nevalide în sare va determina funcția de a eșua.
  • [CRYPT_MD5] - MD5 hashing cu o sare de 12 caractere începând cu $ 1 $
  • [CRYPT_BLOWFISH] - hașura Blowfish cu o sare incepand cu $ 2a $, $ 2x $ sau $ 2Y $, un doi parametri de cost cifre "$" , și 22 de caractere din alfabetul "./0-9A-Za-z" . Utilizarea caracterelor în afara alfabetului va determina această funcție pentru a returna un șir de lungime zero. "$" Parametru este de bază 2 logaritmul contorului de iterații pentru care stau la baza pocnit-Blowfish algorithmeter hashing și trebuie să fie în intervalul 04-31. Valorile din afara acestui interval va determina funcția de a eșua.
  • [CRYPT_SHA_256] - SHA-256 hash cu o sare de 16 caractere începând cu $ 5 $. În cazul în care șirul de sare începe cu "rounds=<N>$" , valoarea numerică a N este utilizat pentru a indica de câte ori ar trebui să fie executat bucla tocare, la fel ca parametrul de cost pe Blowfish. Numărul implicit de runde este de 5000, există un minim de 1000 și un maxim de 999,999,999. Orice selecție de N în afara acestui interval vor fi trunchiat la cea mai apropiată limită.
  • [CRYPT_SHA_512] - SHA-512 hash cu o sare de 16 caractere începând cu $ 6 $. În cazul în care șirul de sare începe cu "rounds=<N>$" , valoarea numerică a N este utilizat pentru a indica de câte ori ar trebui să fie executat bucla tocare, la fel ca parametrul de cost pe Blowfish. Numărul implicit de runde este de 5000, există un minim de 1000 și un maxim de 999,999,999. Orice selecție de N în afara acestui interval vor fi trunchiat la cea mai apropiată limită.

Pe sistemele în care această funcție suportă multiple algoritmi, constantele de mai sus sunt setate la "1" dacă este acceptat și "0" altfel.

Note: Nu există nici o funcție decripta. crypt() funcția folosește un algoritm-un singur sens.


Sintaxă

crypt( str,salt )

Parametru Descriere
str Necesar. Specifică șirul care urmează să fie trunchiată
salt Opțional. Un șir de sare să se bazeze pe Hașarea

Detalii tehnice

Întoarcere Valoare: Returnează șirul codificat sau un șir de caractere care este mai scurt de 13 caractere și este garantat să difere de sare în caz de eșec
Versiune PHP: 4+
Changelog: $ 2x $ și $ 2y moduri de $ Blowfish au fost adăugate în PHP 5.3.7 pentru a face față atacurilor potențiale de mare biți.

Constantele SHA-256 si SHA-512 au fost adăugate în PHP 5.3.2.

Începând cu PHP 5.3.2, comportamentul Blowfish pe runde invalide returnează "failure" string ("*0" or "*1") , în loc de a cădea înapoi la DES.

Începând cu PHP 5.3.0, PHP conține propria implementare pentru criptei MD5, Standard DES, extinderea DES și algoritmii Blowfish și va folosi în cazul în care sistemul nu dispune de suport pentru unul sau mai multe dintre algoritmi.

Exemplu

Exemplul 1

În acest exemplu, vom testa diferite algoritmi:

<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}

// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}

// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}

// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>

Ieșirea codului de mai sus ar putea fi (depending on the operating system) în (depending on the operating system) de (depending on the operating system) :

Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.


<PHP String Reference