2011-09-22 11 views
5

Durante un aggiornamento da Zend Server CE 5.1 ​​a Zend Server CE 5.5, PHP ha ottenuto anche un aggiornamento dalla 5.3.5 alla 5.3.8. Dopo questa transizione, la funzione di login per un'applicazione zend su cui sto lavorando si è rotta improvvisamente.PHP crypt() con sha256 in Zend Server CE 5.5 tronca il sale fornito

Cercando di eseguire il debug, sembra che l'implementazione di crypt() non rifletta il manuale PHP o l'ho fraintesa. Se mi azzarderei a indovinare, è quest'ultimo.

Sto usando un lungo sale di 16 caratteri come parte di un sale più grande utilizzando SHA256, che viene utilizzato come esempio nel manuale PHP.

$password = //string entered at login 
$salt = '$5$rounds=250000$1234abcd5678defg$'; 

Dopo che ho hash della password inserita

$hash = crypt($password, $salt); 

ottengo una stringa come questa come valore di ritorno:

$5$rounds=250000$1234abcd5678$tI.Oiz.YwWjIwT3K.SLU8SwUZ9J0/odBCkbE6t0igeB 

Quello che mi sconcerta è che il sale di 16 caratteri, fa parte della parte più grande (1234abcd5678defg sopra), ora viene troncato a 12 caratteri.

È questo come previsto? Anche la funzione crypt() sembra restituire risultati diversi rispetto a prima - è normale tra le versioni di PHP? Niente nello changelog suggerisce modifiche radicali agli algoritmi di crittografia.

+0

Beh, c'è stato un bug grave in 5.3.7 riguardante la funzione crypt. È stato corretto alcuni giorni dopo in 5.3.8. Forse dovresti cercare post su questo, vedi se questo può essere collegato al tuo problema? E controlla due volte che non hai PHP 5.3.7 ma 5.3.8. –

+0

Secondo phpinfo() e l'output nel terminale quando si esegue php o php-cli si dice che è il php ottimizzato per zend 5.3.8. La data di costruzione è 24 agosto, quindi sembra essere corretto. L'ultimo commit su crypt_sha256.c, che sembra essere stato incluso in 5.3.7, è che ha risolto un problema con il troncamento del sale. Lo stesso problema che ho ma doveva essere stato risolto. Sto cercando un canale appropriato per potenziali bug in PHP prima di presentare una segnalazione di bug corretta. – Patrick

+0

Credo di aver letto il problema: la cripta ha restituito solo il sale, non i dati crittografati, ma solo quando si utilizza MD5. –

risposta

2

Questa è la risposta che ho ricevuto da Zend:

Grazie per il feedback. Il problema segnalato è considerato un bug. Gli sviluppatori forniranno una correzione, che sarà inclusa in una delle prossime versioni del prodotto.

Problemi correlati