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 回答