1

有人可以为长整数建议一种快速的 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 键的参数超过自动增量长??)

4

4 回答 4

3

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

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

于 2009-11-06T19:20:37.227 回答
1

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

那么,XOR?

于 2009-11-06T19:08:20.480 回答
1

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

于 2009-11-06T19:17:52.983 回答
1

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

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

java中long到String(和返回)的简单对称加密

于 2009-11-06T19:27:21.840 回答