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

xzy*_*fer 2 php encryption mcrypt

我会保持简短.作为PHP的mcrypt库的一部分,有大约40种可能的密码,请参见此处.

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

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

我的问题是,这些密码之间是否存在重大差异,我应该关注这些密码

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

注意

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

Mor*_*sen 5

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

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

但我不能详细介绍您列表中的每个密码.:-)

我个人喜欢AES(Rijndael),它有三种尺寸的键128,192和256位.最着名的攻击比蛮力攻击更快,但仍然不可行.它也很快(实际上英特尔在Westmere和Sandy Bridge中包含AES的机器说明).

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

  • 它只返回字节.你可以选择Base64编码,然后你就没有问题了.如何在传输时表示加密数据是一个普遍关注的问题. (2认同)