0

最近、アプリケーションのリンクの一部が破損していることに気付きました...

破損とは、つまり、文字列が暗号化されてから復号化されると、出力が入力と同じではなく、出力が完全に混乱したものになります。

function encode($string) { 
    $key = 'Gt88ggjJI_987JKbgKHIfgIKhOknoUa6'; 
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key)))); 
}

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

関数名で失礼します。私は (en|de)coding と (en|de)crypting の違いを知っています。残念ながら、レガシーの理由からそれを呼び出す必要があります。

$string が URI GET を介して送信されることがあります (そして、それほど機密情報は含まれていません。トピックを続けてください)。GET を介して送信される場合:

href="/path/to/thingy/?x=<?= urlencode(encode('my amazing string')); ?>"

受信側の PHP は、自動的に urldecode を実行し、次に:

$string = decode($_GET['x']);

しかし悲しいことに、約 400 分の 1 の暗号化/復号化の出力が間違っています。誰かが手を貸してくれたり、どこが間違っているのか説明できますか?

文字列が Cookie 経由で送信されると、文字列も破損することがあります。これは、関数、urlencode、またはインターネット接続が不安定なためにクライアントブラウザーがデータを正しく送信しないことに関係していますか?

4

0 に答える 0