No, lo que estás tratando de lograr es imposible.
El cifrado trata de mantener la información confidencial. Para esto, toma un mensaje de entrada de todos los mensajes de entrada posibles y los cifra de tal manera que la salida no filtre ninguna información sobre el mensaje de entrada. Obviamente, no desea que los mensajes se cifren en la misma salida porque, en ese caso, no podrá recuperar un mensaje o no podrá elegir qué mensaje se cifró.
Ahora, si la salida fuera más pequeña que la entrada, entonces, por definición, habría menos valores de salida que los mensajes de entrada. En ese caso, debe ser mensajes asignados a un valor de salida que ya se ha asignado a otro mensaje de entrada. Esto se denomina el principio de Pigeonhole y se explica en la mayoría de los cebadores criptográficos.
Por lo tanto, lo mejor que puedes hacer es lograr un equilibrio.
Incluso la interrupción de la operación podría causarle problemas si intenta reutilizar la clave. El problema es que un mensaje repetido se cifraría en la misma salida, filtrando información a un atacante de que los mensajes son idénticos. Para esto, la mayoría de los cifrados requieren un IV como entrada. A veces, este IV puede generarse durante el cifrado y el descifrado (números de sector para el cifrado del disco duro), pero a menudo el IV debe almacenarse junto al texto cifrado.
Y luego todavía tendría un mensaje que es confidencial, pero no está protegido o autenticado por integridad. En general, también es necesario agregar una etiqueta de autenticación. Una forma común de hacer esto es calcular un valor de MAC utilizando HMAC.
Por estas razones, el cifrado a menudo ampliará el tamaño del mensaje en lugar de reducirlo.
Por lo tanto, lo único que puede hacer es reducir el espacio del mensaje de entrada. Esto se puede hacer mediante la compresión. Pero también puede intentar encontrar una mejor manera de codificar la información en el mensaje de entrada. Por ejemplo, XML tiene una gran cantidad de sobrecarga, que podría eliminarse mediante el uso de una codificación binaria como ASN.1 con DER o incluso las reglas de codificación PER extrañas pero altamente eficientes.
Tenga en cuenta que el tamaño del texto cifrado también puede filtrar información a un atacante. Por ejemplo, la velocidad de bits de un flujo de MP3 de velocidad variable podría decir mucho sobre el contenido de la transmisión, que se ocultaría si se transmitiera un formato de transmisión de velocidad constante / onda sin procesar.
Finalmente, me gustaría que apunte a Formato de preservación del cifrado o FPE. FPE se puede usar para proporcionar cifrado de mensajes donde el espacio de mensaje de salida es exactamente tan grande como el espacio de mensaje de entrada, incluso si el espacio de mensaje de entrada no es una potencia de dos (Es decir, puede codificarse simplemente como una secuencia de bits). Este método se usa a menudo para cifrar información como los números de tarjetas de crédito, donde el mensaje de entrada nunca se repetirá.
Por lo tanto, FPE es una forma segura de compensar, donde los cifrados modernos a menudo operan en bits, bytes o bloques completos (múltiples bytes) de texto simple a la vez.