Muchas veces la codificación, la encriptación y el hashing son interpretados como lo mismo, sin embargo los conceptos detras cada uno son muy diferentes.
Codificación (Encoding)
La codificación es un método que permite convertir datos de un formato a otro, de modo que un sistema pueda “consumir/entender” la información en otra forma de representación. Su finalidad no es mantener la información en secreto, es simplemente buscar la forma que pueda sea entendida por otro sistema.
Encriptación (Encryption)
Es el proceso de hacer ilegible una información y que solo pueda leerse aplicándose una clave. Es una medida de seguridad.
Ciertos tipos de datos como: contraseñas, tarjetas de crédito, conversaciones privadas, pueden usar este método. Su propósito es transformar la data con el fin de mantener en secreto la información contenida. No se enfoca tanto en la usabilidad, se enfoca en que los datos no puedan ser consumidos por cualquier persona que no sea el destinatario previsto.
La encriptación transforma data en otro formato que solo puede ser entendido por aquellos individuos que poseen una clave que es mantenida en secreto, o sea:
(clave + data encriptada + algoritmo de desencriptado) = acceso a la información.
Hashing
Su propósito se enfoca en asegurar la integridad de datos. De modo que nos aseguramos de que algo fue cambiado si y solo si conocemos que su valor hash fue cambiado. La idea básica de un valor hash es que sirva como una representación compacta de los datos de entrada. El Hash toma la entrada y produce una salida de longitud fija con los siguientes atributos:
- La misma entrada produce la misma salida.
- Entradas diferentes no deberían producir la misma salida.
- No debería ser posible conocer la entrada a partir de la salida.
- Cualquier modificación al dato de entrada (aun siendo muy pequeño) debe dar como resultado un cambio drástico al hash.
Conclusión
A pesar de las diferencias entre ellos podemos llegar a la conclusión que:
- Los 3 transforman data (información, datos) en otro formato.
- Codificación y Encriptación son reversibles, mientras que Hashing no lo es.
Fuentes:
http://danielmiessler.com/study/encoding_encryption_hashing/
https://es.wikipedia.org/wiki/Funci%C3%B3n_hash
https://es.wikipedia.org/wiki/Codificaci%C3%B3n_digital
https://es.wikipedia.org/wiki/Cifrado_(criptograf%C3%ADa)