0

パスワードを暗号化/復号化するために次の手法を使用しています。

$key = 'abcd';
$password = 'password';

$encrypted_password = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $password, MCRYPT_MODE_CBC, md5(md5($key))));

$decrypted_password = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted_password), MCRYPT_MODE_CBC, md5(md5($key))), "\0");

上記のコードは同じページで私のために働いています

しかし、この暗号化されたパスワードを URL で別の Web ページに渡すと、次のようになります。

example.com/authenticate.php?pass=CuESFcvXHnQkZaY79WUL3U2aY9TROkjZFETk9Ur+iFY=

次に、同じキーを使用して元の形式に復号化していないため、結果としてガベージデータが得られます。

URLのエンコード/デコードの問題のようなものだと思いますか?

これを解決する方法はありますか?

ありがとう

4

2 に答える 2

6

+URL の はスペースを表します。URL に任意のデータ、特に特殊文字を含む可能性のあるデータを渡したい場合は、URLurlencodeに入れる前にそれを渡します。

于 2012-07-12T14:20:34.023 に答える
1

あなたの推測は正しいです:

クエリ文字列にアタッチする前に、pass パラメーターを urlencode する必要があります。

urlencode($encrypted_password);

次に、復号化する前に urldecode

urldecode($encrypted_password);

ハッピーコーディング!

于 2012-07-12T14:25:01.493 に答える