2

我会保持简短和简单。作为 PHP 的 mcrypt 库的一部分,有 40 种左右可能的密码,请参见此处

我自己对加密知之甚少,无论使用何种密码,我都在假设,解密时的数据与加密的数据相同(否则有什么意义?)

我需要加密然后解密一个数组或序列化的标准对象。我在网上浏览了几个关于 mcrypt 库的基本实现的示例,并注意到每个示例都使用了不同的密码。这让我想知道这是否有任何意义,或者仅仅是个人喜好?

我的问题是,这些密码之间是否有任何显着差异,我应该知道

  • 我将加密/解密的是一个数组或序列化的标准对象,并且包含相对较少的数据。
  • 此操作将相当少见,因此速度不是一个大问题,< 2s 范围内的任何地方都是可以接受的。
  • 加密后的字符串需要存储在 cookie 中,并通过 url 查询字符串传输(因此对长度和字符集有限制)

笔记

我不是在争论我应该使用哈希还是 hmac。加密是必要的,也是解决此问题的正确选项。

4

1 回答 1

5

给定正确的密钥,任何合理的密码都会在明文/密文之间进行加密/解密。

您选择的密码存在巨大差异。无论是块长度、密钥长度和/或一般安全性。例如,您永远不应该使用 DES,因为它只使用 56 位密钥。对于您引用的列表中的其他密码,类似。在使用任何密码之前,请务必阅读它并确定它是否适合您的上下文。

但是我不能在这里详细介绍您列表中的每个密码。:-)

我个人喜欢AES (Rijndael),它采用三种大小的密钥 128、192 和 256 位。最著名的攻击比暴力攻击更快,但仍然不可行。它也很快(实际上英特尔在 Westmere 和 Sandy Bridge 中包含了用于 AES 的机器指令)。

Serpent 和 Twofish 也是很好的密码。在几年前的 AES 比赛中,Serpent 排在 Rijndael 之后,Twofish 排在第三位(我认为是)。

于 2011-03-05T13:42:07.607 回答