【问题标题】:Suggestions for a fast two way encrypt?快速双向加密的建议?
【发布时间】:2009-11-07 03:29:10
【问题描述】:

有人可以为长整数推荐一种快速的 2 路加密算法吗?

我的候选人是:

  • AES:NIST FIPS-197 指定的高级加密标准。
  • BLOWFISH:由 Bruce Schneier 定义的 Blowfish 算法。
  • DES:由 NIST FIPS-46-3 定义的数据加密标准算法。
  • DESEDE:由 NIST FIPS-46-3 定义的“三重 DES”算法。

编辑 -

速度比安全更重要。实际的请求是“混淆”通过内部 Web 服务传递的 id,因此如果某个 id 被暴露,则无法通过添加 1 来猜测其他 id。(UUID 键的参数超过自动增量长??)

【问题讨论】:

  • 它需要是公钥还是可逆的?你能给出一些关于如何使用算法的提示吗?
  • 我不需要公钥。要求是在数据库中的 id 在机器之间传递时对其进行加密。两台机器都有盐。
  • 英特尔的 Nehalem 将提供在硬件中支持 AES 的说明。一旦 Nehalem 基础 CPU 可用,就很难在速度上击败 AES。

标签: algorithm encryption long-integer


【解决方案1】:

使用 AES。速度是选择取代 DESEDE 的主要考虑因素。在现代 PC 硬件上,它往往比 Blowfish 更快,而且作为标准,它更有可能拥有专门的硬件支持。

顺便说一句,所有密码都加密长整数——每个字节流都是一个整数,以 base-256 表示。

【讨论】:

    【解决方案2】:

    我不需要公钥。要求是在数据库中的 id 在机器之间传递时对其进行加密。两台机器都会加盐

    那么,XOR?

    【讨论】:

    • 环境中的一个将是 ColdFusion,它没有内置对 XOR 的支持,尽管这是正确的。快速简单。
    • 不,绝对不是!如果威胁模型是攻击者将一个ID加1得到下一个ID,那么他可以取(ID XOR key),翻转最后一位,有50%的几率结果是((ID+1 ) 异或键)。因此,如果您所做的只是 XOR,那么即使他不知道,他仍然可以像知道下一个 ID 一样欺骗消息。
    【解决方案3】:

    您选择的主要标准是什么?速度还是安全?这是密码学业务中的基本权衡。这是一组benchmark results for Crypto++。他们不会告诉你一切,但你将能够分辨出哪些算法通常比其他算法更快。这是whitepaper discussing the relative strengths of some popular algorithms。在一般情况下,确定强度是一件非常困难的事情,尽管一些算法已经得到足够的关注,以至于它们的优点和缺点是众所周知的(DES、RSA 等)。一个传统的经验法则是更长的键意味着更大的力量,但你必须非常小心。我怀疑在您的情况下,AES 或 Blowfish 都可以。 AES 可能会得到更广泛的支持,但实际上 - 两者都可能会。除非速度是关键因素,否则请远离 DES。

    【讨论】:

      【解决方案4】:

      如果安全是您主要关心的问题,我会选择 AES。

      但是,对于您的数据库,密文可能太大。如果添加 IV,填充,则至少为 64 个十六进制字符。如果你遇到这样的限制,你可以使用我在这里发布的算法,

      simple symmetric encryption of long to String (and back) in java

      【讨论】:

        猜你喜欢
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-19
        • 2019-09-28
        • 1970-01-01
        • 2012-01-16
        • 2010-09-07
        相关资源
        最近更新 更多