php-strcmp因加密/解密文本而失败.编码问题


php strcmp failing with encrypted / decrypted text.. Encoding issue?

我遇到了一个无法理解的问题。只需尝试以下代码:

$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,它们是不同的,尽管它们在我们看来是一样的。

试试这个

echo( strcmp(trim($text),trim($decrypttext)) );