Cómo crear archivos cifrados de gran tamaño con el comando openssl

8

Durante la creación de un archivo cifrado en AIX, recibí este error:

$ openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc 

test.img: Value too large to be stored in data type
14221428:error:0200107F:system library:fopen:Value too large to be stored in:bss_file.c:356:fopen('test.img','r')
14221428:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:358:

El tamaño del archivo test.img es de 35 GB

El mismo comando funcionó en Linux para archivos de 100GB.

Daya
fuente
1
¿Es este el openssl que vino con AIX o lo instaló por separado? Parece que no fue compilado para manejar archivos grandes. El conocimiento de la versión puede ayudar también: openssl version.
Jeff Schaller
3
¿Ayuda si usa tuberías para evitar opensslsaber algo sobre el tamaño de los archivos de entrada y salida? Algo así comocat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
Celada
EHLO Pls muestra el resultado detruss openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc
KWubbufetowicz
Gracias a todos, SÍ es por defecto OpenSSL vino con AIX - OpenSSL 0.9.8r 8 de febrero de 2011.
Daya
2
Es posible que se encuentre con una limitación de 2 GiB / 32 bits - stackoverflow.com/questions/1746751/… - intente con un archivo que tenga poco más de 2 GiB y luego uno que esté por debajo.
Liczyrzepa

Respuestas:

2

Según el error, su copia de opensslno está compilada o vinculada con soporte de archivos grandes. fopenprobablemente falla porque intenta descubrir el tamaño del archivo justo después de abrirlo y falla.

El truco, entonces, es hacer una openssllectura desde una tubería y escribir en una tubería. Las tuberías no tienen tamaño, y lo fopensabe, por lo que debería estar bien. Las cosas en los otros extremos de las tuberías no necesitan hacer nada elegante, solo necesitan ser filtros de paso entre openssly los archivos reales. Eso es exactamente lo que cates el trabajo. cat, que ahora se convierte en la cosa directamente expuesta al archivo grande, debe tener soporte para archivos grandes, pero como una utilidad básica suministrada por el sistema operativo, supongamos que sí.

cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
Celada
fuente