Veo su punto basado en el hecho de que usted está tratando de ocultar los números de la Seguridad Social. Si alguien sabe que está usando SHA1HASH en el SSN para crear un identificador único, puede generar una lista rápida de todos los números del SSN, SHA1HASH, y luego comparar para tener automáticamente el SSN de la persona en el registro. Peor aún, pueden pregenerar todo esto en una tabla de búsqueda hash, y tienen una clave de 1 hash para cada SSN. Esto se denomina tabla de búsqueda hash, y las formas más complejas se llaman tablas rainbow.
Es por eso que se inventó una segunda característica de hash. Se llama salazón. Salar es básicamente esto; creas una sal, luego modificas tus datos usando la sal. Por ejemplo, supongamos que tiene el SSN 123-45-6789. Puedes salarlo con la cuerda "MOONBEAM". Su nueva cadena para hashing es "123-45-6789MOONBEAM"
Ahora, incluso si alguien sabe que está mezclando el SSN para generar su ID única, todavía no sabe la sal que va a utilizar, y así no pueden derivar el número de Seguro Social original haciendo un hash previamente de una lista de todos los SSN y comparando con su ID. Sin embargo, siempre puede tomar el SSN del usuario, usar el sal y reajustar el SSN + SALT para ver si el SSN del usuario coincide con su ID.
Por último, si se utiliza sólo 1 sal para todo, y lo mantienen en secreto, en lugar de ser capaz de ver la sal, y generar el SSN correspondiente ejecutando incrementos SSN + sal 100 millones de veces y recogiendo el partido, tienen hacer mucho más trabajo para recuperar SSN. Esto se debe a que los 100 millones de números de SSN tienen una cantidad relativamente baja de entropía. (10^9 combinaciones). Añadiendo su sal y mantenerla en secreto, en lugar de correr
SHA1HASH(111-11-1111) -> check hash match
SHA1HASH(111-11-1112) -> check hash match
SHA1HASH(111-11-1113) -> check hash match
Tendrían que ejecutar
SHA1HASH(111-11-1111a) -> check hash match
SHA1HASH(111-11-1111b) -> check hash match
SHA1HASH(111-11-1111c) -> check hash match
...
SHA1HASH(111-11-1111azdfg) -> check hash match
SHA1HASH(111-11-1111azdfh) -> check hash match
....
SHA1HASH(111-11-1111zzzzzzzzzzzzzzzz) -> check hash match
SHA1HASH(111-11-1112a) -> check hash match
SHA1HASH(111-11-1112b) -> check hash match
.. y así sucesivamente hasta que finalmente llegan a
SHA1HASH(123-45-6789MOONBEAM) -> check hash match
en qué punto finalmente lograron crackear el SSN + SALT
Ni siquiera saben cuántos caracteres l ong your salt es Eso es 10^(número de caracteres de su sal) por más trabajo que deben hacer solo para obtener 1 SSN, y mucho menos obtener toda la tabla.
Un título mejor para esta pregunta sería "¿Se puede descifrar fácilmente un hash?" –
¿Quién te dijo que puedes ir hacia atrás? – kennytm
¿Intentó retroceder? ¿Has encontrado una función que en realidad * sí * retroceda? –