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 GBです

同じコマンドが100GBファイルのLinuxで機能しました。


1
これは、AIXに付属のopensslですか、それとも個別にインストールしましたか?大きなファイルを処理するようにコンパイルされていないようです。バージョンを知ることも役立ちます:openssl version
Jeff Schaller

3
パイプを使用しopensslて入力ファイルと出力ファイルのサイズについて何も知らないようにすると役立ちますか?何かcat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
セラダ2016年

EHLO。Plsの出力を示してtruss openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc
KWubbufetowicz

おかげで、はい、デフォルトです。opensslはAIXに付属しています-OpenSSL 0.9.8r 2011
Daya

2
-あなたは2ジブ/ 32ビット制限に実行している可能性がありますstackoverflow.com/questions/1746751/... -そしてちょうどは2GiB上のファイルを試着し、ちょうど下にある1。
Liczyrzepa 2016

回答:


2

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

トリックはopenssl、パイプから読み取り、パイプに書き込むことです。パイプにはサイズがなくfopen、これを知っているので、それで問題ありません。パイプの反対側にあるものは、特別なことをする必要はなくopenssl、と実際のファイルの間のパススルーフィルターである必要があります。それがまさにcatの仕事です。cat大きなファイルに直接公開されるようになったは、大きなファイルをサポートする必要がありますが、OS提供の基本ユーティリティとして、サポートしていると仮定しましょう。

cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.