ho usato crypt() per hash della password, con un sale Blowfish come questo:php crypt() Lunghezza sale Blowfish compatibile
$ 2a $, 2 cifre, $, 21 caratteri in [a-zA -Z0-9]
Qui ho fatto un errore che la lunghezza dei caratteri dopo il terzo $ è 21 non 22. Ma ha funzionato correttamente, quindi non ho trovato l'errore.
Funziona sul mio desktop che esegue windows e php 5.4.4 e su AWS ec2 che esegue Amazon linux con php 5.3.x, con quello troppo corto.
Un giorno ho aggiornato AWS php a 5.5.14. allora il problema si è verificato. crypt() restituisce * 0 sempre.
Dopo qualche tentativo, ho aggiunto un $ alla fine del sale così, diventa 22 caratteri. E funziona di nuovo e restituisce la stessa stringa di hash di prima. Anche se non obbedisce alla regola blowfish, i caratteri dovrebbero essere [./a-zA-Z0-9]
Ma ora io duplica questo sito su un'altra macchina che esegue openSuSE 13.1 con php 5.5.14, Questo sale fallito ancora.
Ho eseguito il downgrade del php alla 5.4.20 ma non l'aiuto.
Il nuovo sito ha ancora bisogno del vecchio database quindi devo fare in modo che l'hash della password funzioni.
Che cos'è la libreria o il modulo che influisce su questo problema di compatibilità dell'errore di lunghezza di blowfish? Tt non sembra la versione di PHP. AWS 5.5.14
Oppure c'è un altro char magico che può salvarmi di nuovo? Ho provato a sostituire la coda $ a ciascuno in [./a-zA-Z0-9] ma non fortunato, la stringa hash è diversa ....
Invece di generare da soli il sale, perché non usi le [funzioni di hashing] di PHP (http://php.net/manual/en/function.password-hash.php)? – PeeHaa
Il sistema esistente deve funzionare ancora. –
"Ma ora costruisco un altro sito in openSuSE 13.1 con php 5.5.14, Questo salt non è riuscito di nuovo." <- Non c'è alcun motivo per cui non è possibile utilizzare gli strumenti appropriati per il lavoro lì – PeeHaa