No sabemos exactamente cómo Facebook administra las contraseñas de los usuarios, sin embargo, podemos imaginar este escenario:
Un nuevo usuario inicia sesión en su cuenta de Facebook con la contraseña: Password1
. Es probable que, inmediatamente, Facebook genere contraseñas similares como: Passw0rd1
. pAssword2
, Passmord1
... etc.
Facebook luego almacena sus hashes respectivos (que son diferentes, por supuesto) de modo que si un usuario escribe su contraseña (después del restablecimiento), el hash de la nueva contraseña se compara con todos estos hashes almacenados: Facebook puede decirle entonces si su nueva contraseña es similar a la anterior o no.
EDIT:
Siguiendo @ Philipp comentando que Facebook no tiene contraseñas de hash, quiero compartir esta información que cité la documentación oficial de Facebook ( Cómo mantener las contraseñas seguras ):
Nosotros hash cada contraseña usando nuestro algoritmo interno hashing
y el único salt para esa persona. Desde que Facebook almacena contraseñas
de forma segura como hashes , no podemos simplemente comparar una contraseña directamente con la
base de datos. Primero debemos hacer un hash y comparar los hashes.