Rara vez utiliza codificación para integridad 1 . La codificación se utiliza para transformar algunos datos en otro formato, generalmente porque es más adecuado para el otro sistema. Por ejemplo, se utiliza base64 porque algunos sistemas pueden no reaccionar muy bien a algunos datos binarios. La codificación solo puede ayudarlo contra los errores de transmisión . (Por ejemplo, si los datos de base64 recibidos contienen un carácter no válido, sabrá que algo salió mal).
Funciones de hash can ser usado para integridad para asegurar que los datos no hayan sido manipulados por un atacante . Código de autenticación del mensaje con clave hash (HMAC) use una función hash, junto con una clave (conocida por el remitente y el destinatario) para garantizar que los datos hayan sido enviados por la persona correcta, realizando la autenticación.
Como puede ver, la codificación simplemente ofrece integridad y no lo protege contra un atacante. Las funciones de hash, si se usan correctamente, pueden proteger la integridad de los datos transmitidos contra los errores de transmisión y los atacantes.
En el caso de proporcionar un nombre de usuario y una contraseña a un sitio web, autenticación básica codificará su nombre de usuario y contraseña con base64. Esto no proporciona ninguna seguridad en absoluto, porque cualquiera puede descifrarlo. Por ejemplo, podemos recuperar fácilmente el nombre de usuario / contraseña utilizado en la página de Wikipedia sobre la autenticación básica:
# Encoding the username and password
$ echo -n "Aladdin:OpenSesame" | base64
QWxhZGRpbjpPcGVuU2VzYW1l
# Retrieving the encoded username and password
$ echo -n "QWxhZGRpbjpPcGVuU2VzYW1l" | base64 -D
Aladdin:OpenSesame
El nombre de usuario / contraseña no están codificados por razones de seguridad, pero para escapar de un carácter especial.
1 Consulte Detección de errores y corrección (Wikipedia)