我会保持简短。作为 PHP mcrypt 库的一部分,有 40 种左右可能的密码,see here .
我自己对加密不太了解,我正在假设无论使用什么密码,解密时的数据与加密的数据相同(否则还有什么意义呢?)
我需要加密然后解密数组或序列化标准对象。我浏览了 mcrypt 库基本实现的几个在线示例,并注意到每个示例都使用不同的密码。这让我想知道这是否有任何意义,或者只是个人喜好?
我的问题是,这些密码之间是否存在任何显着差异,我应该关心知道这一点
- 我要加密/解密的是数组或序列化标准对象,并且包含相对较少的数据。
- 此操作相当罕见,因此速度并不是一个大问题,< 2 秒范围内的任何时间都是可以接受的。
- 加密后的字符串需要存储在cookie中并通过url查询字符串传输(因此长度和字符集有限制)
注意
我并不是在争论是否应该使用散列还是 hmac。加密是必要的,也是解决此问题的正确选择。
最佳答案
任何合理的密码都会在给定正确 key 的情况下在明文/密文之间加密/解密。
您选择的密码存在巨大差异。无论是 block 长度、 key 长度和/或一般安全性。例如,您永远不应该使用 DES,因为它只使用 56 位 key 。您引用的列表中的其他密码与此类似。在使用任何密码之前,请务必仔细阅读并确定它是否适合您的环境。
但我无法详细介绍您列表中的每个密码。 :-)
我个人喜欢AES (Rijndael) 采用三种大小的 key :128、192 和 256 位。最著名的攻击比暴力攻击更快,但仍然不可行。它也很快(实际上 Intel 在 Westmere 和 Sandy Bridge 中包含了用于 AES 的 machine instructions)。
Serpent 和 Twofish 也是很好的密码。几年前的 AES 竞赛中,Serpent 排名第二,仅次于 Rijndael,而 Twofish 排名第三(我认为是)。
关于php - 用于加密/解密 php 对象或数组的首选 mcrypt 密码(如果有)是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5204039/