Gli ultimi tutorial di sviluppo web
 

PHP crypt() Function


<PHP stringa di riferimento

Definizione e l'utilizzo

Il crypt() funzione restituisce una stringa hash utilizzando algoritmi DES, Blowfish o MD5.

Questa funzione si comporta diverso su diversi sistemi operativi. PHP controlla quali sono disponibili algoritmi e quali algoritmi da utilizzare quando viene installato.

Il parametro di sale è opzionale. Tuttavia, crypt() crea una password debole senza il sale. Assicurati di specificare un forte sale sufficiente per una maggiore sicurezza.

Ci sono alcune costanti che vengono utilizzati insieme alla crypt() la funzione. Il valore di queste costanti è fissato dal PHP quando viene installato.

costanti:

  • [CRYPT_STD_DES] - hash standard DES-based con due sale carattere dell'alfabeto "./0-9A-Za-z" . Utilizzo di caratteri non validi nel sale causerà questa funzione per sicuro.
  • [CRYPT_EXT_DES] - estesa hash basato su DES con un sale di nove caratteri rappresentati da un trattino seguito da 4 byte di iterazione count e 4 byte di sale. Questi sono codificati come caratteri stampabili, 6 bit per carattere, carattere meno significativo per primo. I valori da 0 a 63 sono codificati come "./0-9A-Za-z" . Utilizzo di caratteri non validi nel sale causerà la funzione di sicuro.
  • [CRYPT_MD5] - MD5 hash con un sale di 12 caratteri a partire da $ 1 $
  • [CRYPT_BLOWFISH] - hashing Blowfish con un sale a partire da $ 2a $, $ 2x $, o $ 2y $, a due parametri di costo cifra "$" , e 22 caratteri dell'alfabeto "./0-9A-Za-z" . Utilizzo di caratteri fuori dell'alfabeto causerà questa funzione per restituire una stringa di lunghezza zero. Il "$" parametro è il logaritmo a base 2 del numero di iterazioni per il sottostante algorithmeter hashing Blowfish-sfondato e deve essere nell'intervallo 04-31. Valori al di fuori di questo intervallo causerà la funzione di sicuro.
  • [CRYPT_SHA_256] - hash SHA-256 con un sale di 16 caratteri che iniziano con $ 5 $. Se la stringa di sale inizia con "rounds=<N>$" , il valore numerico di N è utilizzato per indicare quante volte deve essere eseguito il ciclo di hashing, molto simile al parametro di costo su Blowfish. Il numero predefinito di giri è 5000, v'è un minimo di 1000 e un massimo di 999.999.999. Qualsiasi selezione di N fuori di questo intervallo verrà troncato al limite più vicino.
  • [CRYPT_SHA_512] - hash SHA-512 con un sale di 16 caratteri che iniziano con $ 6 $. Se la stringa di sale inizia con "rounds=<N>$" , il valore numerico di N è utilizzato per indicare quante volte deve essere eseguito il ciclo di hashing, molto simile al parametro di costo su Blowfish. Il numero predefinito di giri è 5000, v'è un minimo di 1000 e un massimo di 999.999.999. Qualsiasi selezione di N fuori di questo intervallo verrà troncato al limite più vicino.

Nei sistemi dove questa funzione supporta più algoritmi, le costanti di cui sopra sono impostati a "1" se supportato e "0" in caso contrario.

Note: Non esiste una funzione decifrare. Il crypt() funzione utilizza un algoritmo a senso unico.


Sintassi

crypt( str,salt )

Parametro Descrizione
str Necessario. Specifica la stringa da hash
salt Opzionale. Una stringa sale basare l'hashing sulla

Dettagli tecnici

Valore di ritorno: Restituisce la stringa codificata o una stringa che è più corta di 13 caratteri ed è garantito per differire dal sale sul fallimento
Versione PHP: 4+
changelog: $ 2x $ e $ 2y modalità di $ Blowfish sono stati aggiunti in PHP 5.3.7 a che fare con potenziali attacchi high-bit.

Le costanti SHA-256 e SHA-512 sono state aggiunte in PHP 5.3.2.

Dal PHP 5.3.2, comportamento su Blowfish giri validi restituisce il "failure" stringa ("*0" or "*1") , invece di ricadere a DES.

Dal PHP 5.3.0, PHP contiene la propria implementazione per la cripta MD5, DES standard, estesa DES e gli algoritmi Blowfish e userà che se il sistema manca di supporto per uno o più degli algoritmi.

Esempio

esempio 1

In questo esempio testare diversi 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.";
}
?>

L'output del codice precedente potrebbe essere (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 stringa di riferimento