gpg解密块大小限制

23c0lvtd  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(590)

我在gpg解密中遇到了一个问题,我正在解密&对大文件执行一些基本操作。正常的解密文件是60g&解密后膨胀到450g。
解密,然后行计数(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!

有人知道怎么回事吗?

b4wnujal

b4wnujal1#

没有所谓的“块大小限制”。数据加密对块大小的块进行逐字节加密(aes为16字节)。最多可以添加一个数据块,将最后一个字节填充到一个完整的块中,在解密时删除该块。
gpg是默认的压缩,然后加密。因此,正是压缩/解压缩导致解密的大小增加。
注意:我在google上搜索到:“gpg压缩”,最热门的问题是:“gnu gpg默认压缩吗?”第一个答案是:“是”和“默认是压缩”。

相关问题