Как создать зашифрованный файл большого размера с помощью команды openssl

Во время создания зашифрованного файла в AIX я получил эту ошибку:

$ 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 составляет 35 ГБ

Эта же команда работала в Linux для 100GB-файла.

Основываясь на ошибке, ваша копия openssl не компилируется или не связана с большой поддержкой файлов. fopen вероятно, терпит неудачу, потому что он пытается обнаружить размер файла сразу после его открытия и сбой.

Трюк заключается в том, чтобы заставить openssl читать из трубы и записывать в трубу. Трубы не имеют размера, и fopen знает это, поэтому с ним должно быть хорошо. То, что происходит на других концах труб, не обязательно нужно делать, они просто должны быть сквозными фильтрами между openssl и фактическими файлами. Это именно то, что есть у cat . cat , который теперь становится предметом непосредственного контакта с большим файлом, нуждается в большой поддержке файлов, но в качестве базовой утилиты, предоставленной ОС, давайте предположим, что это так.

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