Tengo un programa c / c ++ utilizado para cifrar datos para la comunicación entre dos extremos. El cifrado se realiza mediante OpenSSL (0.9.8d-fips, septiembre de 2006). Creo que vale la pena mencionar que no estoy muy familiarizado con el uso de OpenSSL.
El programa funciona bien para paquetes más grandes. Pero la sobrecarga de tamaño es muy alta cuando se cifran paquetes de tamaño más pequeño. He hecho una prueba para demostrar el problema.
+-------------+-----------------+-------------------+
| Input Chars | Encrypted Chars | Input/Encrypted % |
+-------------+-----------------+-------------------+
| 1 | 74 | 1.351351351 |
| 2 | 74 | 2.702702703 |
| 3 | 74 | 4.054054054 |
| 4 | 74 | 5.405405405 |
| 5 | 74 | 6.756756757 |
| 6 | 74 | 8.108108108 |
| 7 | 74 | 9.459459459 |
| 8 | 74 | 10.81081081 |
| 9 | 74 | 12.16216216 |
| 10 | 74 | 13.51351351 |
| 11 | 74 | 14.86486486 |
| 12 | 90 | 13.33333333 |
| 13 | 90 | 14.44444444 |
| 14 | 90 | 15.55555556 |
| 15 | 90 | 16.66666667 |
+-------------+-----------------+-------------------+
La prueba se realizó incrementando el número de caracteres de entrada de 1 a 10000. Los siguientes gráficos ilustran los resultados con mayor claridad.
Gráfico 1: Tamaño encriptado vs Tamaño de entrada
Gráfico2:proporciónvstamañodeentrada
Desde el segundo gráfico, es claramente visible que la sobrecarga de cifrado es muy alta para entradas más pequeñas (tamaño inferior a 300 bytes).
¿Esto es normal / aceptable? Si es así, ¿hay alguna alternativa (con menos gastos generales)? Debido a que la aplicación utiliza paquetes más pequeños en gran medida (agruparlos no es una opción).
Como se mencionó anteriormente, se usa OpenSSL 0.9.8d, que es una versión un poco más antigua (1.0.1g, abril de 2014, ya está disponible). ¿Se solucionará el problema si lo actualizo?