L'algoritmo di crittografia MD5 che spesso viene utilizzato per cifrare le password da memorizzare nei DB
con i suoi 32 caratteri è diventato piuttosto debole e "facilmente" decriptabile..
Mentre SHA1 con i suoi 40 caratteri, riuslta ancora essere salvo dagli attacchi di forza bruta.. (almeno per quanto riguarda i pc di casa ;-)
Ecco una semplice ma efficace funzione che vi permette di generare delle chiavi univoche randomiche.
Per fare questo utilizziamo la funzione microtime che restituisce la data in formato Unix Timestamp completa di microsecondi (es. 0.50602000 1286147732) dopodiche cifriamo il tutto con SHA1 e avremmo la nostra stringa di 40 caratteri che potremmo utilizzare come chiave per i più svariati scopi.. Per esempio associarla all'ID di un record di un Database per evitare che qualche furbetto modifichi i $_POST o i $_GET per accedere a dati che non lo riguardano.. oppure se avete uno spazio ftp su Aruba e volete condividere un file con un amico senza dover creare una cartella protetta, basta dare come nome la nostra chiave e molto difficilmente, considerando che aruba nega il listing folder, qualcuno riesca ad indovinare la nostra hash key
<?php
function random_key()
{
// genero una chiave di 40 caratteri
$key = sha1(microtime());
return $key;
}
// richiamo la funzione
echo random_key();
?>
Come si può notare è molto semplice e funzionale..
Ma se avessimo la necessità di crittografare le nostre password?
ecco un'altra funzione molto simile ma che cifra in SHA1 tutte le password che vogliamo :-)
<?php
function get_sha1_value($string)
{
// conveto la stringa in una chiave di 40 caratteri (operazione non reversibile)
$key = sha1($string);
return $key;
}
// la stringa da convertire
$str = "Parola Segreta";
// richiamo la funzione e ne visualizzo il risultato
echo get_sha1_value($str);
?>
Vi basta sostituire il contenuto della variabile $str con la vostra password da criptare e il gioco è fatto..
Commenti