【发布时间】:2019-07-20 02:26:01
【问题描述】:
由于 PHP 7.2 不再支持 mcrypt_encrypt,我正在尝试完全替代此函数。
在阅读了许多 SO 答案后,我发现了以下使用 PHPSECLIB 的代码,但它并没有像 mcrypt 那样生成精确的加密文本。
function encryptRJ256($key,$iv,$string_to_encrypt)
{
// $rtn = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string_to_encrypt, MCRYPT_MODE_CBC, $iv);
$rijndael = new Crypt_Rijndael(CRYPT_RIJNDAEL_MODE_CBC);
$rijndael->setKey($key);
$rijndael->setIV($iv);
$rijndael->setKeyLength(256);
$rijndael->disablePadding();
$rijndael->setBlockLength(256);
$rtn = $rijndael->encrypt($string_to_encrypt);
$rtn = base64_encode($rtn);
return($rtn);
}
我的钥匙和 IV 是
$ky = 'lkirwf897+22#bbtrm8814z5qq=498j5';
$iv = '741952hheeyy66#cs!9hjv887mxx7@8y';
如您所见,前 42 个字符相等,但其余字符不同
要加密的文本:57F0-ECD3-1A3B-341E-BA39-F81B-F020-0DE0
mcrypt_encrypt 输出:
3uw7mVZthiIPPNosvppZHd1jEau3Ul+0BQ4AVS2t80skauq3Zv9z5uztvmiBpYqQcKGIDP5YHfdEBhPBfdVbxg==phpseclib 输出:
3uw7mVZthiIPPNosvppZHd1jEau3Ul+0BQ4AVS2t80tKnjjxVhuAwh3E1S5OnH1up5AujvQu1Grgyv16tNIEDw==
我需要生成相同的加密文本,因为该文本是由另一个我无法更改的程序解密的。
所以我的问题是,是否可以使用 phpseclib 或任何其他方式生成与 mcrypt_encrypt 相同的加密文本?
【问题讨论】:
-
github.com/phpseclib/mcrypt_compat 可能也是您需要考虑的。
标签: php encryption phpseclib