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


8

Во время создания зашифрованного файла в 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 ГБ.


1
Это openssl, который поставляется с AIX, или вы установили его отдельно? Похоже, он не был скомпилирован для обработки больших файлов. Зная версию может помочь также: openssl version.
Джефф Шаллер

3
Поможет ли вам использование каналов, чтобы вы opensslничего не знали о размере входных и выходных файлов? Нечто подобноеcat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
Celada

EHLO. Просьба показать выход изtruss openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc
KWubbufetowicz

Спасибо всем, ДА, по умолчанию openssl поставляется с AIX - OpenSSL 0.9.8r 8 февраля 2011 г.
Daya

2
Возможно, вы столкнулись с ограничением в 2 ГБ / 32 бита - stackoverflow.com/questions/1746751/… - попробуйте файл размером чуть более 2 ГБ, а затем файл, который чуть меньше.
Liczyrzepa

Ответы:


2

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

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

cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.