Da quanto ho capito, l'IV è usato come blocco precedente solo per il primo blocco. Ma dal momento che ogni blocco è utilizzato da quanto segue, questo aggiunge sicurezza significativa è un IV è fornito e non basato sulla password.
Così ho implementato un sistema di login quando l'utente fornisce entrambi, distinti con un minimo di 8 caratteri usando qualsiasi carattere a cui tengano conto a patto che usino almeno 3 tipi (superiore, inferiore, numerico, speciale, non ASCII).
Ma ora qualcuno mi ha detto che, definendo la IV, indebolisco la crittografia in quanto renderebbe la password un po 'inutile.
Non ho capito esattamente la sua spiegazione.
Il mio codice assomiglia a questo:
$hash = openssl_encrypt($username, 'aes-256-cbc', $password, false, md5($iv, true));
- Sì, sto crittografando il nome utente
- Sia la password che IV sono definite dall'utente
- Sì, sto chiedendo loro due password
- Sto avvolgendo l'IV in RAW md5 per assicurarmi di ottenere una lunghezza di 16 chr standard
Qualcuno può chiarire se l'uso IV in questo modo è una buona pratica ed è un'idea abbastanza strong.