Probabilmente è a causa del tipo di campo della tua password. Il campo della tua password è VARCHAR ? Quanto tempo è? Mi sembra che SHA sta generando una stringa più lunga di quella consentita dal campo, quindi viene interrotta quando viene archiviata e corrisponde quando la rigeneri per verificare.
Documentazione MySQL
dice che sono necessari 40 caratteri per memorizzare l'output di SHA .