【问题标题】:gpg decryption block size limitgpg解密块大小限制
【发布时间】:2017-10-20 10:26:21
【问题描述】:

我在对大文件进行解密和执行一些基本操作时遇到了 gpg 解密问题。正常解密文件为60G,解密后膨胀到450G。

解密,然后行计数(wc -l)仅在 HDFS 层内完成;下面是代码sn-p

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!

有人知道发生了什么吗?

【问题讨论】:

  • 有一个误解,加密/解密不会改变十几个字节的数据大小。压缩可以极大地改变文件大小。所以,到底发生了什么,这个问题是模糊的。建议使用小文件并在每一步检查数据。提供minimal reproducible example,
  • 好的。我认为除了 gpg 加密/解密之外,我没有运行任何其他压缩算法。如果我将加密/解密命令放在这里可能会更清楚: 加密:gpg --recipient myMail@mail.com --encrypt <FILENAME> 解密:cat FILENAME.gpg | gpg --batch --passphrase-file passPhraseFile --yes --recipient myMail@mail.com --decrypt 这里没有压缩;一点也不。希望这是一个最小的开始。
  • 好的,那么gpg也提供压缩吗?如果您使用它,您应该知道。
  • 我知道压缩是基于我看到的输出,但是我不知道 gpg 正在做什么类型的压缩。

标签: unix hadoop encryption hdfs gnupg


【解决方案1】:

没有“块大小限制”之类的东西。数据加密在块大小的块上逐字节加密(AES 为 16 字节)。最多可以添加一个数据块以将最后一个字节填充到一个完整的块中,该块在解密时会被删除。

gpg 是默认压缩然后加密。所以是压缩/解压导致解密的大小增加。

注意:我在 Google 上搜索过:“gpg 压缩”,最热门的问题是:“GNU GPG 是否默认压缩?”第一个答案是:“是”和“默认为'ZIP'”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多