Sto provando a scrivere un codice sicuro che possa mantenere le password degli utenti del mio sito il più possibile sicure. Ora sono abbastanza nuovo per la crittografia e vorrei alcune opinioni e suggerimenti professionali. Così come una stima approssimativa di quanto tempo ci vorrebbe per forzare il mio attuale metodo di crittografia.
Quindi la mia crittografia inizia con la creazione di un valore SALT casuale come tale
$salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
Dopo che il valore SALT è stato creato, viene sottoposto a hash con SHA-256 come tale
$password = hash('sha256', $_POST['bindPass'] . $salt);
Dopo che l'hash $ password è stato creato ho re-hash i valori per proteggerli più lontano
for($round = 0; $round < 656757; $round++)
{
$password = hash('sha256', $password . $salt);
}
Ora, dopo che è stato effettuato il reindirizzamento, la Crittografia è associata a una funzione e viene aggiunta direttamente alla query Inserisci PDO. Ecco la funzione di crittografia.
function encrypt_cpass($in)
{
$iv_size = mcrypt_get_iv_size(MCRYPT_TWOFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$enc = mcrypt_encrypt(MCRYPT_TWOFISH,ENCRYPT_KEY, $in, MCRYPT_MODE_ECB, $iv);
$enc = base64_encode($enc);
return $enc;
}
E infine la parte PDO
$query_params = array(
':password' => encrypt_cpass($password),
..........
}
Non posso dire che ottengo prestazioni pessime con il seguente codice e lo script, ma sono più preoccupato che io possa fare la password non assicurando il modo giusto e che alla fine potrebbe essere interrotta. Quindi, di nuovo, se hai qualche suggerimento o potresti indicarmi alcune buone risorse, per favore pubblicale.
Saluti.