1

この質問の回答からソースをコピーしました

この2つの関数を作成しました

function my_encrypt($string) {
    $key="1234";
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), 
        $string, MCRYPT_MODE_CBC, md5(md5($key))));
}

function my_decrypt($string) {
    $key="1234";
    return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), 
         base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}

そして、以下に示すコードを使用して暗号化と復号化を試みたとき

 $string="445676467";
    echo $ecr=my_encrypt($string)."<br/>";
    echo my_decrypt($ecr);

次の出力が生成されます

01pEoOCsp7oloZTDMAKF/cxgB0YQFScje6Z8GBXu8Tw=

445676467›HŽÇeVJMç>ÑÑBHc.–ãyeÇN–=“VSã

これが間違っているのは、復号化が正しい出力を提供していないことです。445676467

しかし、これを直接試したとき

$key="1234";
    $string="2011";
    $encrypted= base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, 
        md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));

    $decypted= rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), 
        base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
    echo $encrypted."<br/>";
    echo $decypted;

これは正しい答えを与える

4

1 に答える 1

2

面白いですが、その理由はあなたのシンテックスです。

私はあなたのコードを使用しました:

     $string="445676467";
//You echo & put value in the var at the same time?? smells like troubles.
        echo $ecr=my_encrypt($string)."<br/>"; 
        echo my_decrypt($ecr);

結果:

01pEoOCsp7oloZTDMAKF/cxgB0YQFScje6Z8GBXu8Tw=
445676467�H���eVJM�&gt;��BHc.��ye�N�=�VS�

そして試しました:

 $string="445676467";
    $ecr=my_encrypt($string);
    echo $ecr;
    echo my_decrypt($ecr);

結果:

01pEoOCsp7oloZTDMAKF/cxgB0YQFScje6Z8GBXu8Tw=
445676467

したがって、機能に問題はなく、使い方だけです。最初に変数に値を入れてから、それを出力します。

于 2012-08-03T10:08:51.027 に答える