crypt

(PHP 3, PHP 4 , PHP 5)

crypt -- Criptazione di una stringa a senso unico (hashing)

Descrizione

string crypt ( string str [, string salt])

La funzione crypt() restituisce una stringa criptata tramite l'algoritmo standard di crittografia di UNIX basato sul DES o su algoritmo alternativi disponibili sul sistema. I parametri sono la stringa che deve essere crittografata, e un parametro opzionale da usarsi come base per la crittografia. Vedere le pagine Unix relative alla funzione cript per maggiori dettagli.

Se il parametro salt non viene fornito, il PHP ne genererà uno casuale.

Alcuni sistemi operativi supportano più di un tipo di criptazione. Infatti in alcuni casi lo standard basato sul DES viene sostituito da un algoritmo basato su MD5. Il tipo di crittografia da utilizzare viene attivato tramite il parametro salt. Al momento dell'installazione il PHP cerca di determinare le caratteristiche della funzione crypt e accetterà salt per altri tipi di funzioni. Se il parametro salt non viene passato, il PHP genererà, per default, una chiave di due caratteri a meno che il sistema di cifratura di default del sistema non sia MD5, in questo caso si genererà una chiave casuale compatibile con MD5. Il PHP imposta una costante chiamata CRYPT_SALT_LENGTH dalla quale si può sapere se sul sistema si può utilizzare una chiave di due caratteri o la chiave più lunga di 12 caratteri.

Se si usa la chiave generata, bisogna fare attenzione che questa viene generata una sola volta. Se si chiama la funzione ricorsivamente, si possono avere dei problemi di formato e di sicurezza.

La crittografia basa sullo standard DES restituisce la chiave come primi due caratteri dell'output. Inoltre utilizza solo i primi 8 caratteri del parametro str, pertanto stringhe più lunghe che inizino con i medesimi otto caratteri, creeranno il medesimo risultato (se si utilizza la medesima chiave).

Sui sistemi nei quali la funzione cript() supporta più tipi di crittografia, si imposteranno le seguenti costanti a 0 o a 1 in base al tipo disponibile.

Nota: Non esiste una funzione di decriptazione, poiché crypt() è un algoritmo ad una via.

Esempio 1. Esempio di uso di crypt()

<?php
$password
= crypt("My1sTpassword"); // let salt be generated

# Si dovrebbe passare l'intero risultato di crypt() come chiave di confronto
# della password per evitare problemi con differenti algoritmi di hash. (Come detto prima
# lo standard basato su DES usa chiavi di 2 caratteri,
# mentre lo standard basato su MD5 ne usa 12).
if (crypt($user_input, $password) == $password) {
   echo
"Password verified!";
}
?>

Vedere anche md5() e il modulo Mcrypt.