【发布时间】:2019-09-11 23:22:40
【问题描述】:
希望有人能对此有所了解。
我正在使用 DES-CBC 密码更新一些使用 mcrypt_generic 函数的旧代码
当我更新此代码以使用 openssl_encrypt 时,我得到相同的输出,但在我的编码字符串末尾附加了 8 个字节。
之前
$this->_cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC,'');
mcrypt_generic_init($this->_cipher, $this->_key, $this->_iv)
mcrypt_generic($this->_cipher, $text)
方法输出前:
27049189e7e08db6
之后
openssl_encrypt($text, "DES-CBC", $this->_key, OPENSSL_RAW_DATA , $this->_iv);
方法输出后:
27049189e7e08db6d504d16516e1c567
为什么会发生这种情况,还有什么(除了子字符串)可以防止它发生?
【问题讨论】:
-
我会查看填充。由于 openssl 是一个现代库,它可能使用现代填充标准(如 PKCS#7),而 mcrypt 可以使用较旧的技术(如零填充)。我不确定,但我遇到了类似的问题,我认为是填充不同。
标签: php encryption openssl