Me limitaré a las respuestas existentes.
El hash no es encriptado. Un requisito de cifrado es descifrar. En otras palabras, debe poder recuperar el texto sin formato original de la salida de la función de cifrado (el texto cifrado). El hash no tiene este requisito. Está bien si el valor original se ha ido ya que estamos interesados en el valor hash.
El hash puede ser un poco confuso ya que la idea se usa en muchos lugares y los requisitos de hash pueden cambiar según la aplicación. Por ejemplo, supongamos que tengo una tabla hash con 256 ranuras (8 bits). Para usarlo, tomaré una cadena, la dividiré en hash y obtendré un valor hash de 0–255. Luego uso el valor hash como índice en la tabla hash. Tenga en cuenta que nuestra función hash debe producir un número entre 0–255 ya que queremos usarlo como índice en una tabla. Dado que solo hay 256 posibles valores hash, está bastante claro que algunas cadenas diferentes van a tener el mismo valor (una colisión). En esta situación, está bien. Solo estamos buscando una manera de dispersar las cadenas alrededor de la tabla hash para que podamos hacer una búsqueda rápida.
- ¿Qué algoritmos gráficos debe implementar un estudiante de segundo año de CS?
- ¿Alguien puede aprender programación, algoritmos y estructuras de datos en tres meses y obtener el bronce en la Olimpiada Británica de Informática?
- ¿Cuáles son las amplias variedades en programación dinámica que se preguntan con frecuencia en los concursos de codificación?
- ¿Por qué el ordenamiento rápido se denomina 'rápido' incluso cuando tiene complejidad O (n2) en el peor de los casos?
- ¿Vale la pena pagar 6 x $ 49 por una estructura de datos y especialización de algoritmos en Coursera?
Ahora considere el hash para contraseñas. Cuando usamos contraseñas, no ciframos la contraseña original y luego la desciframos para verificarla con una contraseña entrante. Lo que hacemos es cambiar la contraseña original y luego la contraseña entrante y ver si los valores son los mismos. No queremos que las contraseñas almacenadas sean reversibles en absoluto. En esta situación, tener solo 256 valores hash posibles no es aceptable. Sería muy fácil encontrar otra cadena que tenga el mismo valor que una contraseña real. Nuestro verificador de contraseñas pensaría que esta nueva cadena coincidía ya que los hash coincidirían. Para las contraseñas, esto se hace haciendo que la función hash use un rango mucho más grande de valores de salida, quizás 512 bits. Puede parecer que esto es cifrado, ya que el cifrado usa estos tamaños de bloque más grandes, pero no lo es. Todavía es hashing. No puede tomar el valor hash y de alguna manera invertirlo para obtener el valor original.
Una forma de recordar esto es pensar que el cifrado toma un valor y lo coloca en una bóveda bancaria muy sólida y sofisticada. (Una cripta puede considerarse una especie de bóveda, por lo tanto, cifrar). Si conoce el secreto para abrir la bóveda, puede recuperar el valor. Por otro lado, el término “hash” significa cortar en pedazos. Es el nombre de un plato en el que todos los ingredientes se cortan en pedazos y se combinan.
Cifrar: sus objetos de valor están seguros y se pueden recuperar
Hash: tus objetos de valor no se pueden recuperar