我会保持简短。作为PHP的mcrypt库的一部分,有大约40种可能的密码,see here。
我自己对加密知之甚少,无论使用何种密码,我都在假设工作,解密后的数据与加密的数据完全相同(否则有什么意义呢?)
我需要对数组或序列化标准对象进行加密然后解密。我在网上浏览了几个mcrypt库的基本实现示例,并注意到每个示例都使用了不同的密码。它让我想知道这是否有任何意义,或仅仅是个人偏好?
我的问题是,这些密码之间是否有任何重大差异我应该关注知道
注意
我不是在讨论是否应该使用哈希或者hmac。加密是必要的,也是此问题的正确选择。
答案 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