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.
openssl version
.openssl
saber 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
truss openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc
Respostas:
Com base no erro, sua cópia
openssl
não é compilada ou vinculada ao suporte a arquivos grandes.fopen
provavelmente falha porque tenta descobrir o tamanho do arquivo logo após abri-lo e falha.O truque, então, é fazer a
openssl
leitura de um tubo e gravar em um tubo. Tubos não têm tamanho, efopen
sabem 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 entreopenssl
e os arquivos reais. É exatamente isso quecat
é 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.fonte