Me gustaría transmitir archivos cifrados desde un servidor. Sé que, por ejemplo, RSA admite el descifrado de secuencias. No estoy seguro de si Twofish o Rijndael también lo admiten.
Supongo que si no son compatibles, se puede implementar al dividir los datos en fragmentos de tamaño conocido y cifrar el fragmento real en lugar de toda la información. Entonces el resultado será algo como esto:
[enc(chunk(data, 0)), enc(chunk(data, 1)), ... enc(chunk(data, index))]
en lugar de
[chunk(enc(data), 0)), chunk(enc(data), 1)), ... chunk(enc(data), index))]
¿Tengo razón, o estos algoritmos fueron diseñados con soporte de transmisión en mente?
Para aclarar lo que quise decir con "descifrado de transmisión":
El streaming se describe en el manual node.js muy bien, pero es un concepto general y un Linux bien conocido característica, por lo que no debe ser nuevo para cualquier programador. Es más o menos el envío de un archivo grande en trozos pequeños, por lo que puede comenzar a trabajar con él (pantalla, transformación, etc.) antes de que llegue el archivo completo y no tiene que mantener todo el archivo en la memoria, lo que reduce la memoria. consumo.
El descifrado de secuencias utiliza un secuencia de transformación para descifrar los datos. Así que lees una pequeña parte del texto cifrado, la descifras y escribes la parte de datos resultante en otra secuencia. Puede haber varios problemas aquí, por ejemplo, el texto cifrado tiene un tamaño diferente al de los datos reales, por lo que si desea buscar los datos necesita convertir el índice de datos al índice de texto cifrado. Otro problema que al descifrar un fragmento de tamaño arbitrario podría no resultar en los mismos datos que obtendría al descifrar todo el texto cifrado y dividirlo en trozos después de eso.