Det är förmodligen på grund av ditt lösenordsfält. Är ditt lösenordsfält VARCHAR
? Hur länge är det? Det verkar för mig att SHA
genererar en sträng som är längre än den tillåts av fältet så den avbryts när den lagras och den matchar när du regenererar den för att kontrollera.
MySQL-dokumentation
säger att du behöver 40 tecken för att lagra utdata från SHA
.