Une fonction de hachage transforme des données de longueur quelconque en une valeur de longueur fixe (le hachage ou digest). Une même entrée produit toujours le même hachage, mais si l'entrée change ne serait-ce que d'un seul bit, le hachage obtenu est totalement différent.
La propriété essentielle d'un bon hachage cryptographique est le sens unique. Il est pratiquement impossible de retrouver l'entrée d'origine à partir du seul hachage. C'est pourquoi, en stockant les mots de passe sous forme de hachage plutôt qu'en clair, on ne peut pas connaître immédiatement le texte original même en cas de fuite de données.
Une collision survient lorsque deux entrées différentes produisent le même hachage. Elle existe en théorie, mais avec un hachage sûr, la fabriquer volontairement doit être calculatoirement impossible. Si MD5 et SHA-1 ont été abandonnés, c'est précisément parce qu'il est devenu possible d'y provoquer des collisions.
Pour le stockage des mots de passe, le hachage seul ne suffit pas. Comme un même mot de passe donne toujours le même hachage, on ajoute à chaque entrée une valeur aléatoire, le sel (salt), avant de hacher, et on utilise un hachage lent comme bcrypt ou Argon2 pour ralentir les attaques par force brute massive.