Como criar um arquivo criptografado de tamanho grande usando o comando openssl

8

Durante a criação de um arquivo criptografado no AIX, recebi este erro:

$ 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:

O tamanho do arquivo test.img é de 35 GB

O mesmo comando funcionou no Linux para arquivo de 100 GB.

Daya
fonte
1
Esse é o openssl que acompanha o AIX ou você o instalou separadamente? Parece que não foi compilado para lidar com arquivos grandes. Sabendo a versão podem ajudar também: openssl version.
Jeff Schaller
3
Ajuda se você usar pipes para evitar opensslsaber algo sobre o tamanho dos arquivos de entrada e saída? Algo comocat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
Celada
EHLO. Pls mostra a saída detruss openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc
KWubbufetowicz 5/16
Obrigado a todos, sim, é openssl padrão veio com AIX - OpenSSL 0.9.8r 08 de fevereiro de 2011.
Daya
2
Você pode estar enfrentando uma limitação de 2 GiB / 32 bits - stackoverflow.com/questions/1746751/… - experimente um arquivo com pouco mais de 2GiB e um pouco abaixo.
Licenciada # 21/16

Respostas:

2

Com base no erro, sua cópia opensslnão é compilada ou vinculada ao suporte a arquivos grandes. fopenprovavelmente falha porque tenta descobrir o tamanho do arquivo logo após abri-lo e falha.

O truque, então, é fazer a opensslleitura de um tubo e gravar em um tubo. Tubos não têm tamanho, e fopensabem disso, então deve ficar bem com ele. As coisas nas outras extremidades dos tubos não precisam fazer nada sofisticado, elas só precisam ser filtros de passagem entre openssle os arquivos reais. É exatamente isso que caté trabalho. cat, que agora se torna exposto diretamente ao arquivo grande, precisa ter suporte a arquivos grandes, mas como um utilitário básico fornecido pelo sistema operacional, vamos assumir que sim.

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