2017-10-20 172 views
0

我在解密&對大文件執行一些基本操作時遇到gpg解密問題。解密後的正常解密文件爲60G &,其膨脹至450G。gpg解密塊大小限制

解密,然後rowcount(wc -l)只在HDFS層內完成;以下是代碼片段

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

上面的「解密」應該由gpg --decrypt ...命令替換。我沒有寫在這裏只是爲了避免它。 對於像2〜3Gigs這樣的小文件,代碼工作正常。但對於像上面提到的大小的大文件,解密會拋出錯誤:

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

有一個誤解,加密/解密不會改變數據大小超過十幾個字節。壓縮可以徹底改變文件大小。那麼,究竟發生了什麼,這個問題是模糊的。建議使用小尺寸文件並在每個步驟檢查數據。提供[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字節)。最多可以添加一塊數據,以便將最後一個字節填充到完整的塊中,並在解密時將其刪除。

gpg默認壓縮,然後加密。所以正是壓縮/解壓縮導致大小增加解密。

注意:我使用的是:「gpg壓縮」,最熱門的問題是:「GNU GPG默認壓縮嗎?」第一個答案是:「是」和「默認爲'ZIP'」。