【问题标题】:Compression and Encryption... Which to apply first?压缩和加密...首先应用哪个?
【发布时间】:2012-11-01 16:22:59
【问题描述】:

我正在使用 C 语言进行远程备份项目... 我想发送数据并压缩和加密数据。

但是我很困惑是先压缩还是先加密!

什么会更好?:

  1. 压缩数据,然后加密
  2. 加密数据然后压缩

我还将使用 zlib 进行压缩。 我想知道要使用哪个加密库... 有人说 libgcrypt 很好。 好的加密库(非常易于使用)的建议将不胜感激...... :)

或者有什么可以同时完成这两项工作的吗?

谢谢!

【问题讨论】:

    标签: encryption compression libgcrypt


    【解决方案1】:

    您应该在加密之前进行压缩。

    任何好的加密算法都会产生无法很好压缩的类随机数据。

    【讨论】:

    • 虽然如果源数据在文件中的已知点具有已知的压缩头,那么您很容易受到已知的明文攻击。
    • 谢谢!任何好的 C 库都知道加密和解密?
    • @MartinBeckett:任何好的现代密码都可以抵抗已知的明文攻击,甚至更强大的攻击,例如自适应选择密文。如果您使用的是 AES 之类的东西,那后果是零的。
    • @mfanto - 是的,好的算法可以抵抗直接的明文反转,但如果你有明文,它确实可以更容易地暴力破解密码。即使是带有 AES 的 truecrypt 现在也容易受到攻击,它只有一个已知的校验和
    • 考虑到这一点并不重要。 AES 抵抗已知的明文攻击。确定正确解密的难度可以忽略不计。如果您的密钥小到足以使暴力破解成为可能,那么您面临的问题比确定有效解密(其中存在统计测试可以帮助)更大。
    【解决方案2】:

    我最喜欢的易于编写、理解和使用的算法是blowfish。该链接在一些代码留置权中有一些实现。

    它与 AES/DES 之类的安全级别大致相同,即几乎牢不可破。与所有加密货币一样,真正的漏洞将是您和您的用户!

    【讨论】:

    • 这不是真的。 Blowfish 的安全级别远不及 AES,而且由于密钥非常小,DES 被有效破解。 Blowfish 使用 64 位块大小,因此无论模式如何,生日悖论告诉我们,您将在 (2^32 * 8) = 32GB 数据之后开始泄漏信息。
    • 如果您使用“passwd”作为密码,或者在您的 PS3 固件中包含私钥,那么它同样安全。加密的问题通常是人们在想 - 我将使用具有最令人印象深刻的 mil-spec 例程的库
    • 是的,河豚是要走的路(作者是 Bruce Schneier!)。然而,这完全取决于你如何使用它:一定要使用正确的分组密码模式,以确保有足够的强度来抵御加密攻击
    • 当然,我同意这一点,但我仍然认为建议具有已知限制的密码不是一个好主意,当存在好的替代方案时,有更广泛的支持,已经标准化并由NIST 和 Suite B,几乎毫不含糊地推荐。
    • @G_G:完全不正确。 Bruce 不推荐 Blowfish 而不是 AES,任何其他密码学家也不推荐任何地方。更重要的是,他甚至推荐 AES 而不是 Twofish,他自己提交的比赛。
    猜你喜欢
    • 1970-01-01
    • 2012-01-08
    • 2011-08-16
    • 2012-01-24
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    相关资源
    最近更新 更多