opensslコマンドを使用して大容量暗号化ファイルを作成する方法

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ファイルサイズは35GBです。

Linuxの100GBファイルでも同じコマンドが動作します。

答え1

エラーによると、あなたのコピーはopenssl大容量のファイルサポートにコンパイルまたはリンクされていません。fopenおそらく、ファイルを開いた後にファイルサイズを取得しようとすると失敗するため、失敗します。

さて、秘密はopensslパイプからデータを読み込み、パイプに書き込むことです。パイプには寸法がないので、fopenそれを知っていれば大丈夫でしょう。パイプのもう一方の端にあるものは複雑な作業をする必要はなく、openssl実際のファイル間のパススルーフィルタだけが必要です。これがcatまさに仕事のすべてです。catこれは大容量ファイルに直接公開される機能になり、大容量ファイルのサポートが必要ですが、オペレーティングシステムが提供する基本ユーティリティではサポートしているとします。

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

関連情報