@Lizard
Nigdzie nie pisałem o trzymaniu hasła w postaci jawnej, po to właśnie są hashe :)
Już na spokojnie, bo pisanie jednym ciągiem wprowadza trochę bałaganu. W bazie trzymany jest hash (np. Argon2id). Porównanie odbywa się na serwerze, który ma od klienta hasło i hash z bazy.
I jak najbardziej algo generuje różne hashe dla tego samego ciągu, tu przykład Bcrypt:
https://bcrypt-generator.com/
ciąg: ccwrc
wygenerowane hashe:
$2a$12$oigG3gG7jlroHTTzTL/beeCRVxi7FNj1rkGw3dseHv3K8gbksxbIC
$2a$12$5boL5FfyLKNSlyNHKFTLCO6vumXUVJ04afwfXJnvTU9ICEmVyn6K2
$2a$12$DrL6oFP9qz98Mbss1VRh5OtnrDvIL8ite1TDvet2km8brYa84qiWK
Jak chcesz, możesz dodatkowo sprawdzić zgodność hasha z hasłem (ccwrc) na innej stronie:
https://bcrypt.online/
Może pewne zamieszanie wynikać z tego, że checksum (np. MD5) jest mylone z hashem a to zupełnie inne rzeczy. Checksum zawsze da taki sam ciąg wyjściowy dla określonego ciągu wejściowego.