php - 用于加密/解密 php 对象或数组的首选 mcrypt 密码(如果有)是什么

标签 php encryption mcrypt

我会保持简短。作为 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/

相关文章:

php - 如何获取临时文件路径?

php - Echo woocommerce 产品缩略图?

android - 在 Android 中使用 AES 加密的最佳做法是什么?

php - 找不到 mcrypt => 调用未定义的函数 Laravel\mcrypt_create_iv()

php - 通过 URL 参数发送 mcrypt 加密的字符串 - 解码的文本被破坏

PHP:如何在不使用 AJAX 调用的情况下更新用户登录计时器

php - PHP 文件和目录的 chOwner 和组权限

javascript - JS中的AES加密,PHP中的解密?

Android——加密与解密

c++ - mcrypt linux 如何使用 rijndael 256 cbc