La mia tecnica di hashing è sicura? [duplicare]

-1

Non sono sicuro che questo sia il posto migliore per pubblicare questo tipo di domanda.

Ho ideato una funzione che, credo, sia un metodo di hashing molto sicuro. (Potrei sbagliarmi completamente).

Ecco il codice:

function hashPW($password){
    $letters = array('a','b','c','d','e','f','g');
    $numbers = array(1,2,3,4,5,6,7);
    return str_replace($letters,$numbers,md5($password));
}

"password" restituisce come 56443332511765461483274528823699

Non sono sicuro se questo sia un metodo sicuro. I miei pensieri erano che è difficile sapere quali numeri fossero in realtà una lettera o un numero dal md5.

Se questa non è una buona opzione da usare per la mia applicazione web PHP, potresti suggerire qualcosa che sia.

Grazie.

    
posta ryryan 08.02.2014 - 23:37
fonte

1 risposta

9

Sui principi generali: Non eseguire il rollover della tua crittografia . È assolutamente sicuro che ti sbagli.

Stai prendendo MD5 e poi applichi una trasformazione veloce. Ciò rende il tuo schema peggiore di MD5. "È difficile sapere quale numero fosse in realtà una lettera o un numero" - e allora? MD5 non è incrinato applicando la trasformazione inversa: nessuno sa come un modo veloce di calcolare la trasformazione inversa. Quello che le persone fanno è calcolare MD5 (P) per molti, molti valori di P (miliardi e altro). Calcolare la tua trasformazione da MD5 (P) è estremamente veloce, quindi la tua trasformazione è facile da decifrare come MD5.

Questa è una brutta tecnica di hashing. Non tirare il tuo. Leggi Come password di hash sicure? . Sì, lo so che è lungo. Aspetterò.

Ora che capisci che una funzione di hashing della password deve essere lenta e salata, usa uno standard. PHP (versioni abbastanza recenti) ha una funzione password_hash ; la modalità predefinita usa bcrypt che va bene.

    
risposta data 09.02.2014 - 00:18
fonte

Leggi altre domande sui tag