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:

test.img O tamanho do arquivo é de 35 GB

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

    
por Daya 05.03.2016 / 17:17

1 resposta

2

Com base no erro, sua cópia de 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 falhar.

O truque, então, é fazer openssl ler um pipe e gravar em um pipe. Pipes não têm tamanho, e fopen sabe disso, então deve ficar bem com isso. As coisas nas outras extremidades dos pipes não precisam fazer nada extravagante, elas só precisam ser filtros de passagem entre openssl e os arquivos reais. Isso é exatamente o que o trabalho de cat é. cat , que agora se torna a coisa diretamente exposta ao arquivo grande, precisa ter suporte a arquivos grandes, mas como um utilitário básico fornecido pelo sistema operacional, vamos supor que sim.

cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
    
por 01.04.2017 / 21:08

Tags