我在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!
有人知道怎么回事吗?
1条答案
按热度按时间b4wnujal1#
没有所谓的“块大小限制”。数据加密对块大小的块进行逐字节加密(aes为16字节)。最多可以添加一个数据块,将最后一个字节填充到一个完整的块中,在解密时删除该块。
gpg是默认的压缩,然后加密。因此,正是压缩/解压缩导致解密的大小增加。
注意:我在google上搜索到:“gpg压缩”,最热门的问题是:“gnu gpg默认压缩吗?”第一个答案是:“是”和“默认是压缩”。