1

私は理解できない問題につまずいています。次のコードを試してみてください。

$key = "This is a very secret key";
$text = "This is a very secret message";
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB);

echo( $text. "\r\n" );
echo( $decrypttext . "\r\n" );
echo( md5( $text ) . "\r\n" );
echo( md5( $decrypttext ) . "\r\n" );
echo( strcmp($text,$decrypttext) );

両方の文字列が等しいため、strcmp() の出力は 0 になるはずですが、何らかの理由で文字エンコーディングが原因で、この比較が失敗することがあります。

その比較を機能させるにはどうすればよいですか。utf8 への変換、逆変換、文字列としてのキャストなどを試みましたが、この比較を機能させるものは何もありません。各文字列の md5 を処理する場合、実際には文字エンコーディング/デコーディングの問題です。私たちには同じように見えても、彼らは違う..

4

1 に答える 1

1

これを試して

echo( strcmp(trim($text),trim($decrypttext)) );
于 2013-07-28T23:54:48.690 に答える