Sto cercando un metodo di hash della password per un nuovo sistema server. Gli hash devono essere generati dal codice PHP e verificati da PHP, nonché da un numero di applicazioni su un sistema Linux.
So che MD5 e SHA-1 semplici o salati non sono una buona soluzione. Ho sentito che sha256crypt e sha512crypt dovrebbero andare bene oggi. Una volta ho letto che gli algoritmi di sha2crypt ora sono molto facili da crackare, rendendoli inutili. Spesso sento raccomandare bcrypt. Ma ora ci sono anche diversi problemi con bcrypt. $ 2 $ non sembra più rilevante, ma $ 2a $ e $ 2b $ sono incompatibili perché ho capito. E almeno PHP ha una strana idea di sistemare le cose riutilizzando il prefisso $ 2a $ per l'algoritmo $ 2b $, rendendolo incompatibile. Non so cosa significano $ 2x $ e $ 2y $. PBKDF e scrypt non sembrano essere supportati da nulla, quindi non posso usarli.
PHP può generare hash bcrypt con la funzione password_hash
, ma non sembra essere in grado di creare sha256crypt o sha512crypt hash, né con password_hash
né crypt
che deciderà da solo quale algoritmo usare . Voglio specificare l'algoritmo perché non tutte le applicazioni supportano alcun algoritmo.
Per ora l'algoritmo di sha512crypt sembra più promettente, considerando prima la compatibilità, poi la sicurezza. (Una cosa super sicura che semplicemente non funziona è ancora inutile.) Ma PHP non può generarli. Sono bloccato con crypt()
usando ancora SHA-1? (Questo è quello che fa: $ 1 $)
Il sistema operativo è Ubuntu 14.04 e le applicazioni sono exim, dovecot e proftpd per ora. La versione di PHP è 5.5.9.
Quindi cosa dovrei fare? Sono completamente confuso da tutti adesso.