2017-10-20 54 views
0

大きなファイルに対して基本操作を実行している&を解読しているgpg解読に問題があります。通常の暗号化解除されたファイルは、解読後に60G &であり、それは450Gに膨張する。gpg復号化ブロックサイズの制限

復号化後、rowcount(wc -l)はHDFSレイヤー内でのみ行われます。以下はコードスニペットです

rowCount=`hdfs dfs -cat ${hdfsDir}/{fileName} | decrypt | wc -l` 

"decrypt"はgpg --decrypt ...コマンドに置き換えてください。私はそれを避けるためにここに書きませんでした。 2〜3Gigのような小さなサイズのファイルの場合、コードは正常に動作します。しかし、上記のサイズのような大きなファイルの場合、復号化には以下のエラーが発生します。

gpg: block_filter 0x7f2cf62547c0: read error (size=14560,a->size=14560) 
gpg: block_filter 0x7f2cf624c990: read error (size=14900,a->size=14900) 
gpg: mdc_packet with invalid encoding 
gpg: decryption failed: Invalid packet 
gpg: block_filter: pending bytes! 
gpg: block_filter: pending bytes! 

誰でも何が起こっているのでしょうか?

+0

誤解がありますが、暗号化/復号化によってデータサイズが12バイト以上変更されることはありません。圧縮すると、ファイルのサイズが大幅に変更される可能性があります。それで、まさに何が起こっているのですか、その問題はあいまいです。小さなサイズのファイルで作業し、各ステップでデータを調べることを提案する。 [mcve]、 – zaph

+0

を入力してください。私は、gpgの暗号化/復号化以外の他の圧縮アルゴリズムはないと思います。私は、暗号化/ decrytionを置けば、おそらくそれがより明確になるだろう、ここでコマンド: 暗号化: 'GPG --recipient [email protected] --encrypt ' 復号化: '猫をFILENAME.gpg | gpg --batch --passphrase-file passPhraseFile --yes --recipient [email protected] --decrypt' ここで圧縮はありません。まったく。これが最初のための最小のものであることを望みます。 – knowone

+0

OK、gpgも圧縮を提供しますか?あなたがそれを使用しているなら、それを知っておくべきです。 – zaph

答えて

0

「ブロックサイズ制限」などはありません。データ暗号化は、ブロックサイズチャンク(AESの場合は16バイト)でバイトごとに暗号化されます。最後のバイトを完全ブロックに埋め込むために、最大1ブロックのデータを追加することができ、これは復号化時に除去される。

gpg be defaultは圧縮してから暗号化します。したがって、解凍のサイズを増加させるのは圧縮/解凍です。

注:私はグーグルで "gpg compression"とヒットしました。 "GNU GPGはデフォルトで圧縮されますか?"最初の答えは「はい」で、「デフォルトは「ZIP」」です。

関連する問題