gpt4 book ai didi

PHP:Mcrypt - 哪种模式?

转载 作者:IT王子 更新时间:2023-10-29 00:12:26 24 4
gpt4 key购买 nike

我一直在测试各种 modes在 PHP 的 mcrypt 函数中可用。 ECB 是大多数教程中使用的模式,但刚刚链接的页面和 some users 都不推荐使用该模式,所以我认为 CBCCFB 应该可以解决问题。

PHP 文档在比较 mcrypt 可用的不同模式时并不太胖,而是引用了 “Schneier 的 Applied Cryptography” 一书,该书我暂时不太想买。

那么我想使用哪种 mcrypt 模式,为什么?

最佳答案

mcrypt 实际上实现了比 listed 更多的模式,您可以使用字符串名称来访问它们:

  • cbcCBC 模式
  • cfb – 8 位 CFB 模式;
  • ncfb – block 大小 CFB 模式;
  • nofbOFB 模式(不是 ofb);
  • ctrCTR 模式。

这些模式在实现细节上有所不同,因此它们的适用性取决于您的数据和环境。

填充:

  • CBC 模式仅加密完整 block ,因此 mcrypt 会用零字节填充您的明文,除非您实现自己的填充。

  • CFBOFBCTR 模式加密任意长度的消息。

初始化向量:

  • CBCCFB 模式需要随机 IV(不要使用 MCRYPT_RAND)。

  • OFB 模式仅需要一个唯一的 IV(例如,一个全局计数器,如果行从未被修改或删除,则可能是数据库主键)。

  • CTR 要求每个计数器 block 都是唯一的(不仅仅是消息的 IV,它是第一个计数器 block ,其余的,通过将计数器 block 递增 1 形成消息的每个 block )。

更多信息在 NIST recommendations .

在 PHP 中应该不重要的性能差异,例如加密或解密是否可以并行化以及每个 block 使用多少次密码迭代(通常是一次,但在 8 位 CFB 中为 16 模式)。

malleability有区别这应该不重要,因为您应用 MAC .

它们的安全性可能存在差异,但为此您应该咨询 cryptographer .

关于PHP:Mcrypt - 哪种模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5108408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com