什么是,如果有的话,首选加密/解密php对象或数组的mcrypt密码

时间:2011-03-05 13:19:13

标签: php encryption mcrypt

我会保持简短。作为PHP的mcrypt库的一部分,有大约40种可能的密码,see here

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

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

我的问题是,这些密码之间是否有任何重大差异我应该关注知道

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

注意

我不是在讨论是否应该使用哈希或者hmac。加密是必要的,也是此问题的正确选择。

2 个答案:

答案 0 :(得分:5)

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

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

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

我个人喜欢AES(Rijndael),它有三种大小的键128,192和256位。最着名的攻击比蛮力攻击更快,但仍然不可行。它也很快(实际上英特尔在Westmere和Sandy Bridge中包括machine instructions用于AES。)

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

答案 1 :(得分:1)

有关密码的完美示例,请转到此链接。 http://perfectcipher.com/tridimensional.html