解密 CakePHP 1.2 数据

4 浏览
0 Comments

解密 CakePHP 1.2 数据

我有一个基于CakePHP 1.2构建的应用程序,并存储了一些加密数据。我正在重建该应用程序,并需要在新应用程序中解密数据以更新其加密方式。在PHP 7.1+环境中,CakePHP 1.2中用于加密数据的密码和方法不可用。有人知道我是否可以在PHP 7.1+环境中解密数据,以便可以使用更新的技术进行加密吗?

当前加密/解密数据的方法:

function _cryptData(&$data, $direction) {
    $ivSize = mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_CBC);
    switch ($direction) {
        case 'encrypt':
            $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
            $data = base64_encode($iv) . '|' . base64_encode(mcrypt_encrypt(MCRYPT_TRIPLEDES, Configure::read('CakeMix.cryptKey'), $data, MCRYPT_MODE_CBC, $iv));
            break;
        case 'decrypt':
            list($iv, $encoded) = explode('|', $data);
            $data = mcrypt_decrypt(MCRYPT_TRIPLEDES, Configure::read('CakeMix.cryptKey'), base64_decode($encoded), MCRYPT_MODE_CBC, base64_decode($iv));
            break;
    }
}

0
0 Comments

CakePHP 1.2是一个PHP框架,而Mcrypt是一种用于数据加密和解密的PHP库。然而,Mcrypt在PHP 7.2版本中被废弃,因此在该版本之后无法直接使用。然而,在PHP 7.2+版本中,仍然可以手动安装Mcrypt,并继续使用它进行解密。此外,也可以使用OpenSSL库来解密数据。

要使用Mcrypt进行解密,可以使用以下代码示例:

$data = openssl_decrypt(
    base64_decode($encoded),
    'des-ede3-cbc',
    Configure::read('CakeMix.cryptKey'),
    OPENSSL_RAW_DATA | OPENSSL_NO_PADDING,
    base64_decode($iv)
);

上述代码将使用Mcrypt解密通过base64编码的数据。需要注意的是,可能需要在解密过程中处理空字节填充的问题。

如果不想使用Mcrypt,还可以考虑使用OpenSSL进行解密。有关如何使用OpenSSL进行解密的更多信息,可以参考相关的文档和资源。

总结起来,CakePHP 1.2在PHP 7.2+版本中使用Mcrypt进行数据解密时会遇到问题,因为Mcrypt被废弃。解决方法之一是手动安装Mcrypt,并继续使用它进行解密。另一种解决方法是使用OpenSSL库进行解密。以上提供了使用OpenSSL解密的示例代码,同时也提到了可能遇到的空字节填充问题。

0