La criptografía moderna opera en bytes, no en texto, por lo que la salida de los algoritmos criptográficos es de bytes. A veces, los datos cifrados se deben transferir a través de un medio de texto y se debe utilizar una codificación segura para archivos binarios.
Parámetro | Detalles |
---|---|
TE | Codificacion de texto. La transformación del texto a bytes. UTF-8 es una opción común. |
BE | Codificación binaria. Una transformación que es capaz de procesar cualquier dato arbitrario y producir una cadena válida. Base64 es la codificación más utilizada, con Base16 / hexadecimal un buen subcampeón. Wikipedia tiene una lista de codificaciones candidatas (se adhieren a las etiquetadas como "Arbitrarias"). |
El algoritmo general es:
Encrypt
InputText
en InputBytes
través de la codificación TE
(codificación de texto). InputBytes
a OutputBytes
OutputBytes
en OutputText
través de BE
( codificación binaria ). Decrypt
(revertir BE y TE de Encrypt
):
InputText
en InputBytes
través de la codificación BE
. InputBytes
a OutputBytes
OutputBytes
a OutputText
través de TE
. El error más común es elegir una "codificación de texto" en lugar de una "codificación binaria" para BE
, que es un problema si cualquier byte encriptado (o cualquier byte IV) está fuera del rango 0x20
- 0x7E
(para UTF-8 o ASCII ). Como el "rango seguro" es menos de la mitad del espacio de bytes, las posibilidades de que una codificación de texto sea exitosa son muy pequeñas.
0x00
, es probable que los programas C / C ++ lo malinterpreten como el final de la cadena. 0x08
, puede borrar el carácter anterior (y el código de control), haciendo que el valor de InputText
para Decrypt
tenga el valor incorrecto (y la longitud incorrecta).