【问题标题】:php mcrypt equivalent for sagepay on a windows serverWindows 服务器上 sagepay 的 php mcrypt 等效项
【发布时间】:2012-11-01 20:13:31
【问题描述】:

直到最近,当我们开始改用 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。

【问题讨论】:

  • '我们公司主要使用 vbscript 直到最近才开始改用 PHP' - 从坏到坏,或煎锅到火(更清楚严重性)。
  • 总比站着被炸好。
  • 我认为他们俩都烧得很糟糕......
  • 我感觉到一个 .net 精英... :p
  • 一点也不,我使用 VB/VBA 多年,甚至在适当的时候勇敢地使用 PHP(公共部门的东西通常需要它)。我使用 PHP,我对它的厌恶仅仅来自经验,而不是我对任何其他语言或技术的偏爱。如果我被视为做出诸如“.NET 好,PHP 不好”之类的错误判断,我会质疑我对自己无知的认识。

标签: php encryption mcrypt opayo


【解决方案1】:

有很多替代方案,您的软管供应商缺乏支持/意愿将是关键。

如果您使用自己的 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

【讨论】:

    【解决方案2】:

    原生扩展的替代方案是 phpseclib

    http://phpseclib.sourceforge.net/

    【讨论】:

      猜你喜欢
      • 2011-07-22
      • 2015-06-30
      • 1970-01-01
      • 2014-02-21
      • 2011-12-10
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多