直到最近,当我们开始改用 PHP 时,我们公司主要使用 vbscript。在尝试将 SagePay 表单工具包集成到我们的一个项目中时,我遇到了这个障碍。
我们在 Windows 2008 服务器上,这是无法更改的。服务器不包含 mcrypt 库,我们的服务器主机不会安装它,因为它是一个共享平台。
有问题的行来自您用来通过 SagePay 支付费用的 SagePay 表单工具包。希望你们中的一些人会熟悉这些。
有问题的行是:
//** perform encryption with PHP's MCRYPT module
$strCrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $strEncryptionPassword, $strIn, MCRYPT_MODE_CBC, $strIV);
这是一个更大的加密函数的一部分,如下所示:
//** Wrapper function do encrypt an encode based on strEncryptionType setting **
function encryptAndEncode($strIn) {
global $strEncryptionType
,$strEncryptionPassword;
if ($strEncryptionType=="XOR")
{
//** XOR encryption with Base64 encoding **
return base64Encode(simpleXor($strIn,$strEncryptionPassword));
}
else
{
//** AES encryption, CBC blocking with PKCS5 padding then HEX encoding - DEFAULT **
//** use initialization vector (IV) set from $strEncryptionPassword
$strIV = $strEncryptionPassword;
//** add PKCS5 padding to the text to be encypted
$strIn = addPKCS5Padding($strIn);
//** perform encryption with PHP's MCRYPT module
$strCrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $strEncryptionPassword, $strIn, MCRYPT_MODE_CBC, $strIV);
//** perform hex encoding and return
return "@" . bin2hex($strCrypt);
}
}
有谁知道我如何能够绕过这个问题,或者我可以在其位置实现的等效库?任何指向正确方向的指针、提示或点将不胜感激。
编辑好的,所以在研究了更多之后,据我了解,我只需要一个 128 位 AES 加密功能,而不使用 mcrypt。