php mcrypt相当于Windows服务器上的sagepay

时间:2012-11-13 11:36:56

标签: php encryption mcrypt sagepay

我们公司主要使用vbscript直到最近,当我们开始更改为PHP时。在尝试将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。

2 个答案:

答案 0 :(得分:0)

原生扩展的替代方法是phpseclib

http://phpseclib.sourceforge.net/

答案 1 :(得分:0)

有很多选择,你的软管供应商缺乏支持/意愿将是一个棘手的问题。

如果您使用自己的VPS /可以沿着新路线行驶。我推荐OpenSSL; http://www.openssl.org/ - 由于您在Windows上,可以查看http://slproweb.com/products/Win32OpenSSL.html

您是否通过phpinfo()查看了可以使用的内容?

还有PCrypt; http://www.phpclasses.org/package/1610-PHP-Symetric-encryption-of-data-using-only-PHP-code.html