Encriptar o cifrar
Codificación hash
La codificación y la encriptación son dos técnicas que desempeñan un papel crucial en la transmisión, el intercambio, el almacenamiento y la creación de contenidos digitales, ya sean texto plano o rich media. El cifrado emplea un algoritmo que toma el texto plano o los metadatos de los medios enriquecidos y los convierte en una cadena pseudoaleatoria hexadecimal llamada hash. El hash es incomprensible a menos que se descifre con una clave privada. Tus contraseñas, números de tarjeta de crédito, mensajes de WhatsApp y llamadas de Facetime se convierten en un hash antes de transmitirse a la red.
La codificación es necesaria porque el formato en el que se captura el contenido y el formato en el que se recibe pueden variar, ya que los servicios web y las plataformas OTT suelen codificar el contenido en el momento de la transmisión. La codificación tiene dos propósitos: ahorra ancho de banda tanto en el receptor como en el transmisor y resuelve los problemas de incompatibilidad en el receptor. Al llegar al destinatario, el servicio web aprovecha los descodificadores incorporados para recrear el contenido en el dispositivo de destino.
¿Es base64 una encriptación
Cuando empezaba como desarrollador junior, me resultaba muy difícil distinguir algunos conceptos, porque nunca me tomé el tiempo de sentarme y aprender sobre ellos. Ayudar en este viaje es la intención de este artículo. Voy a simplificar y acortar algunas cosas aquí y allá para hacer los temas más digeribles y menos difíciles de entender.
La codificación consiste en representar algún tipo de información (digamos una palabra o un texto) de forma que se pueda guardar o transferir cómodamente. Algo muy común en los ordenadores es escribir un pequeño texto (como éste) y guardarlo en un archivo (como el disco duro de mi ordenador). Un archivo sólo puede guardar datos binarios (1s y 0s), así que tengo que codificar mi texto en 1s y 0s.
Dado que el uso de texto en un ordenador es tan importante para la gente, se han ideado muchas formas de codificar texto, y UTF-8 es la que más se utiliza porque puede codificar casi todos los caracteres de un idioma (alemán, sueco, japonés, chino,...).
Los datos binarios también pueden representar otro tipo de información. Una serie de 0 y 1 pueden ser, por ejemplo, los números de una hoja de cálculo o los colores del dibujo de un perrito. Las matemáticas (especialmente en la escuela) utilizan sobre todo el sistema decimal. Si nuestros datos binarios representan datos en el sistema decimal, nuestra codificación sería así:
Cifrado sencillo
Si se necesita la confidencialidad para la transmisión, discute la característica para el orden de cifrado y codificación por código de corrección de errores (ECC), es decir, 1) cifrar-después-codificar, 2) codificar-después-cifrar.
Con algunos modos se puede codificar y luego encriptar, concretamente los modos de cifrado de flujo (CTR, OFB). Los errores de bits durante la transmisión se traducen en errores de bits idénticos en el texto plano codificado, y la corrección de errores funcionará según lo previsto.
Sin embargo, con los modos de cifrado por bloques estándar (ECB, CBC), se cifra todo el bloque, y un error de 1 bit en el texto cifrado crea muchos cambios de bits en el bloque descifrado debido al efecto avalancha. Dependiendo del tipo de corrección utilizada, esto puede ser corregible, pero generalmente es mejor aplicar el código al texto cifrado.
Otro peligro de la corrección de errores seguida es el siguiente. Si seguimos el principio de Kerchoff, tanto el método/código de corrección de errores como el método de cifrado deben ser públicos. Así, la única incógnita es la clave secreta, suponiendo un esquema simétrico.
Algoritmos de codificación
Por ejemplo, la codificación de caracteres UTF-8 es el algoritmo de codificación estándar para contenidos web en la actualidad, es decir, es compatible con la mayoría de los navegadores. La especificación HTML5 anima a los autores a utilizar UTF-8. Los verificadores de conformidad pueden desaconsejar a los autores el uso de codificaciones heredadas, por lo que la mayoría de los editores de texto e IDEs eligen UTF-8 por defecto para los documentos recién creados.Codificación de una cadena en Java mediante Base64El JDK estándar proporciona la clase Base64 ubicada en el paquete java.util.
Base64 también ofrece métodos para codificar y decodificar URLs de forma segura.Los esquemas de codificación Base64 se utilizan comúnmente cuando hay una necesidad de codificar datos binarios, especialmente cuando esos datos necesitan ser almacenados y transferidos a través de medios que están diseñados para tratar con texto. Esta codificación ayuda a garantizar que los datos permanezcan intactos sin modificaciones durante el transporte. Base64 se utiliza comúnmente en una serie de aplicaciones, incluyendo el correo electrónico a través de MIME, así como el almacenamiento de datos complejos en XML o JSON.Los siguientes métodos permiten codificar y decodificar un mensaje String a Base64:1
