Jest to prawdopodobnie spowodowane typem pola hasła. Czy Twoje pole hasła jest VARCHAR? ? Jak długie to jest? Wydaje mi się, że SHA generuje ciąg dłuższy niż pozwala na to pole, więc zostaje odcięty, gdy jest przechowywany i pasuje, gdy generujesz go ponownie w celu sprawdzenia.
Dokumentacja MySQL
mówi, że potrzebujesz 40 znaków do przechowywania wyjścia SHA .