Rijndael 192 位块大小 mcrypt 替代方案
Posted
技术标签:
【中文标题】Rijndael 192 位块大小 mcrypt 替代方案【英文标题】:Rijndael 192-bit block size mcrypt alternative 【发布时间】:2018-07-03 14:24:44 【问题描述】:请先阅读此问题,然后再将其视为重复(尽管如果确实如此,我不知道为什么我找不到它,但太好了!!)
多年来,我们一直在 cfb
模式下将 mcrypt 与 rijndael-192
模块一起使用。我们有很多用它加密的东西。
我们必须迁移到的 php 7.2 不再包含 mcrypt。
Openssl AES 不支持 192 块大小(或 128 以外的任何块大小)。所以接下来我将改变对称加密。
我遇到的问题是遗留数据,如果没有 mcrypt,我看不到如何继续解密它。没有修改遗留数据的选项,因为这对我们来说是不可行的。
所以我的问题是,如何解密使用 rijndael 加密的数据,块大小为 192,不使用 mcrypt?
谢谢
【问题讨论】:
AES-192-CFB - 192 是 KEY 长度,而不是块大小。 AES 仅支持 128 块大小 @LawrenceCheroneRijndael-192 (not to be confused with AES-192)
了解更多信息:wiki.php.net/rfc/mcrypt-viking-funeral
你不能用 PHP 7.1 解密/重新加密吗?
离题了,但是...... 192 位块大小是不寻常的。为什么选择它?
@superphonic - 这里有几个类似的问题,但我不相信它们会对你的情况有所帮助。 Can't decrypt using pgcrypto from AES-256-CBC but AES-128-CBC is OK、MCrypt rijndael-128 to OpenSSL aes-128-ecb conversion 等。另见 Upgrading my encryption library from Mcrypt to OpenSSL、Replace Mcrypt with OpenSSL 和 Preparing for removal of Mcrypt in PHP 7.2
【参考方案1】:
我认为我应该报告,因为我讨厌问题悬而未决。
除了使用 mcrypt 库之外,我没有发现其他方法可以在 PHP 中使用 192 块大小来解密 Rijndael(AES) 密码。我有两个选择:
-
从 PHP PECL 扩展库安装 PHP 7.2 中的 mcrypt 并继续使用它。
使用 mcrypt 库在 PHP 7.1 中解密我的数据,并使用具有 128 个块大小的 openssl AES 密码重新加密。
我们选择了选项 2。虽然它缓慢而痛苦,但远离 mcrypt 显然是更好的长期解决方案。
【讨论】:
以上是关于Rijndael 192 位块大小 mcrypt 替代方案的主要内容,如果未能解决你的问题,请参考以下文章
在 node.js 中重新创建 MCRYPT_RIJNDAEL_128
如何存储 mcrypt_module_open('rijndael-256','','ofb','');在 MYSQL
codeIgniter PHP 8.0中未定义的常量“MCRYPT_RIJNDAEL_128”[重复]
解密在 PHP 中使用 MCRYPT_RIJNDAEL_256 加密的 Python 字符串