PHP:Mcrypt - 哪种模式?
2022-08-30 23:30:52
mcrypt
实际上实现了比列出的更多的模式,您可以使用字符串名称来访问它们:
cbc
– 全血细胞计数模式cfb
– 8 位 CFB 模式;ncfb
– 块大小的CFB模式;nofb
– OFB 模式(非ofb
);ctr
– 点击率模式。这些模式在实现细节方面有所不同,因此它们的适用性取决于您的数据和环境。
填充:
CBC 模式仅加密完整的块,因此除非您实现自己的填充,否则请使用零字节填充明文。mcrypt
CFB、OFB 和 CTR 模式可加密任意长度的消息。
初始化向量:
CBC 和 CFB 模式需要随机 IV(不要使用 )。MCRYPT_RAND
OFB 模式只需要一个唯一的 IV(例如,一个全局计数器,如果行从未被修改或删除,则可能是数据库主键)。
CTR 要求每个计数器块都是唯一的(不仅仅是消息的 IV,这是第一个计数器块,而是其余部分,通过将消息的每个块的计数器块递增 1 而形成)。
更多信息请参阅 NIST 建议。
在PHP中,性能存在差异,例如是否可以并行化加密或解密以及每个块使用多少次密码迭代(通常为一次,但在8位CFB模式下为16次)。
它们的安全性可能存在差异,但为此,您应该咨询密码学家。