0

私はそのようなコードを持っています

function EnDeCrypt($text, $key, $s = 1){
        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
        switch ($s) {
            case '0':
                return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($text), MCRYPT_MODE_ECB, $iv));
                break;
            case '1':
                return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv));
                break;
            default:
                return FALSE;
                break;
        }
    }

1つのスクリプトでEnDeCryptを呼び出すと、すべてが機能します。getparamで暗号化されたデータを別のサーバーに渡そうとすると、復号化できません(このような文字列ŸTe³qëêyÀÝを取得します)

キーが等しい、結果を置くthrow urlencode\urldecode-復号化しない

ベクトルmcrypt_create_iv-nothingを渡してみてください

4

1 に答える 1

4

解読するには、暗号化に使用されたのと同じ初期化ベクトル($iv)が必要です。

それをパラメーターとして関数に渡せば、すべて問題ないはずです。

于 2011-03-24T16:23:31.823 に答える