Во время создания зашифрованного файла в 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 для файла размером 100 ГБ.
openssl version
.openssl
ничего не знали о размере входных и выходных файлов? Нечто подобноеcat 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
Ответы:
Из-за ошибки ваша копия
openssl
не скомпилирована или не связана с поддержкой больших файлов.fopen
вероятно, происходит сбой, потому что он пытается определить размер файла сразу после его открытия и не удается.Хитрость заключается в том, чтобы сделать
openssl
чтение из канала и запись в канал. Трубы не имеют размера иfopen
знают это, так что все должно быть в порядке. Вещи на других концах каналов не должны делать что-то причудливое, они просто должны быть сквозными фильтрами междуopenssl
фактическими файлами. Это именно то, чтоcat
работа.cat
, которая теперь становится вещью, напрямую доступной для большого файла, должна иметь поддержку больших файлов, но как базовая утилита, предоставляемая ОС, давайте предположим, что она есть.источник