Primero, según la teoría matemática, sí (aunque en la práctica puede ignorar esto por completo para las funciones de hash modernas y los números que se pueden lograr mediante cálculos en este universo). Si el sistema no almacena su contraseña en texto sin formato o mediante encriptación reversible, pero en lugar de eso, la hace (como es una práctica recomendada) existe una infinidad de contraseñas potenciales que generarán un hash que se corresponderá con su hash (asumiendo un hash criptográfico ideal función).
Por ejemplo, si su contraseña era password = '!78ghA,NJ58*#3&*'
y utilizaron un hash sha256 con sal (tenga en cuenta que esto debe fortalecerse con la clave con muchas rondas para hacer más dura la fuerza bruta) con una sal de 3 bytes: d7 35 e6
entonces su el hash de la contraseña sería 4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53
(en python puede calcularlo con):
>>> import hashlib
>>> salt = '\xd7\x35\xe6'
>>> password = '!78ghA,NJ58*#3&*'
>>> hashlib.sha256(salt + password).hexdigest()
'4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53'
Note que este hash es de 256 bits. Entonces solo hay 2 256 ~ 10 77 posibles hashes. Si las funciones hash funcionan bien y seleccionan hashes uniformemente para todas las entradas posibles (es decir, la función hash actúa como un oráculo aleatorio ) , una vez que intentes significativamente más de 10 hash 77 , algunos hashes colisionarán (que se puede demostrar con el principio de pigeonhole ). Si probaste 10 hash 80 , deberías esperar encontrar cerca de 1000 contraseñas que coincidan con cualquier hash dado.
Sin embargo, 10 77 es un número extremadamente grande; es aproximadamente el número de átomos en el universo observable. O si cada átomo en el sistema solar (~ 10 57 ) calculara un hash cada nanosegundo, pasaría unos 3000 años antes de que calculara 10 hashes 77 , por lo que esto no es ' Es algo de lo que tienes que preocuparte en la práctica.
(Si probó 5 mil millones de hashes por segundo durante 100 años y tuvo una contraseña muy segura, la posibilidad de encontrar aleatoriamente una contraseña diferente que coincida con su hash de 256 bits es 1 en 7.4 x 10 57 ; esto es como las probabilidades de comprar 7 boletos de powerball en semanas sucesivas y ganar el premio mayor las primeras 6 veces y luego jugar una séptima vez y hacer coincidir 5 números (sin powerball) para ganar solo $ 1 millón.)
Por supuesto, esto no significa que, en la práctica, su contraseña sea única. Personalmente me he encontrado con un sistema Cisco VPN desplegado en la naturaleza que trunca una contraseña aleatoria de 12 caracteres en 8 caracteres sin notificar al usuario (inicialmente descubrí que cuando escribí demasiado rápido, dejé un carácter y aún funcionó; y luego hizo prueba y error). Entonces, siempre y cuando los primeros 8 caracteres sean correctos, puede escribir lo que quiera después y funcionará.
Esto tampoco es un caso aislado; por ejemplo, Microsoft solía truncar silenciosamente las contraseñas de Windows Live ID a 16 caracteres aunque ahora informa al usuario que limita las contraseñas a 16 caracteres:
Las contraseñas de Windows Live ID siempre estaban limitadas a 16 caracteres: el proceso de inicio de sesión ignoró cualquier contraseña adicional. Cuando cambiamos "Windows Live ID" a "cuenta de Microsoft", también actualizamos la página de inicio de sesión para informarle que solo son necesarios los primeros 16 caracteres de su contraseña ".
También es posible que un sistema de autenticación mal diseñado elimine los caracteres especiales de la mitad de su contraseña. Mi amigo descubrió que T-Mobile hizo esto en 2011 cuando usó sus la característica de "contraseña olvidada" mal diseñada que le envió su contraseña en texto simple que en su caso eliminó los caracteres especiales de su contraseña.