代码之家  ›  专栏  ›  技术社区  ›  Nick Van Brunt

快速双向加密的建议?

  •  0
  • Nick Van Brunt  · 技术社区  · 16 年前

    有人能为长整数推荐一种快速的双向加密算法吗?

    我的候选人是:

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

    编辑-

    速度比安全更重要。实际的请求是“模糊”正在通过内部Web服务传递的ID,因此在ID被公开的情况下,不能通过添加1来猜测其他ID。(uuid键对自动增量long的参数??)

    4 回复  |  直到 16 年前
        1
  •  2
  •   erickson    16 年前

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

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

        2
  •  1
  •   a paid nerd    16 年前

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

    然后, XOR ?

        3
  •  1
  •   Ben Collins    16 年前

    你选择的主要标准是什么?速度还是安全?这是密码学业务中的基本权衡。这里有一套 benchmark results for Crypto++ . 他们不会告诉你所有的事情,但你可以知道哪些算法通常比其他算法更快。这里有一个 whitepaper discussing the relative strengths of some popular algorithms . 在一般情况下,确定强度是一件非常困难的事情,尽管一些算法已经得到足够的重视,它们的优点和缺点是相当知名的(DES、RSA等)。传统的经验法则是,长键意味着更大的优势,但你必须非常小心。我怀疑在你的情况下,无论是AES还是河豚都会好的。AES可能会得到更广泛的支持,但实际上——两者都可能。除非速度是关键因素,否则远离DES。

        4
  •  1
  •   Community Mohan Dere    9 年前

    如果你最关心的是安全问题,我会和AES一起去。

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

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