1

私たちの会社は、PHPへの変更を開始したごく最近まで、主にvbscriptを使用していました。SagePayフォームキットをプロジェクトの1つに統合しようとすると、この障害に遭遇しました。

私たちはWindows2008サーバーを使用しており、これを変更することはできません。サーバーにはmcryptライブラリが含まれておらず、共有プラットフォームであるため、サーバーホストは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);
    }
}

この問題を回避する方法、または代わりに実装できる同等のライブラリを誰かが知っていますか?正しい方向へのポインタ、ヒント、またはポイントをいただければ幸いです。

編集わかりました。詳しく調べてみると、理解しているように、mcryptを使用せずに128ビットのAES暗号化機能が必要です。

4

2 に答える 2

0

ネイティブ拡張の代替はphpseclibです

http://phpseclib.sourceforge.net/

于 2012-11-13T12:12:32.330 に答える
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

于 2012-11-13T13:04:34.063 に答える