Se ho un database che memorizza le credenziali di accesso di 1.000.000 di utenti in PLAINTEXT, quanto impegno mi ci vorrà per md5 hash queste password?
Per favore non convertirlo in MD5; è non considerato uno schema di hashing sicuro .
Se hai intenzione di convertirli in qualcos'altro; quindi suggerirei di leggere su Sicurezza della password . L'argomento è troppo lungo per entrare nei dettagli qui.
Inoltre, potresti dirci la compagnia in modo che possiamo essere sicuri di non memorizzare le nostre credenziali lì?
Il tuo sforzo = lo stesso di se fosse 10 righe. Basta convertirne uno e inserirlo in un ciclo.
Sforzo dei computer = sforzo (tempo) di conversione di una riga * 1000000
L'esatto tempo di esecuzione di creare un md5 da testo semplice è un valore misurabile. Il tempo esatto di esecuzione per convertirli tutti è prevedibile dal primo risultato.
Riconosco che il tuo sforzo sarà in gran parte dedicato alle altre parti del tuo sistema di login e non a questa, come la password dimenticata e simili. Per esempio. se il sistema precedente utilizzava la password esatta per gli utenti, dovrai sostituirla con una funzionalità di reimpostazione della password.
Dopo alcuni tentativi ho generato per te una soluzione rapida e dirty
CONSIDERAZIONI PRIMA DI FARE QUESTO ::
Il concetto di base:
SQL::
1 UPDATE
2 TABLE AS TARGET
3 INNER JOIN
4 TABLE AS SOURCE
5 ON
6 TARGET.id = SOURCE.id
7 SET
8 TARGET.[password_field_name] = md5(SOURCE.[password_field_name])
9 WHERE
10 TARGET.id = SOURCE.id
Ciò che essenzialmente fa è collegare la tabella con la password a se stessa con un join interno. Usa gli alias (Target e Source) per distinguere tra le due copie della tabella. Quindi, usando la normale sintassi Update di sql, l'istruzione Set sulle righe 7 e 8 fa sì che il campo della password nella tabella originale diventi uguale all'hash MD5 della stessa password. Per assicurarsi che questo sql agisca solo su una base per riga, stabiliamo la dichiarazione where usando la chiave primaria della tabella.
Leggi altre domande sui tag database coding-standards security