【问题标题】:php strcmp failing with encrypted / decrypted text.. Encoding issue?php strcmp 因加密/解密文本失败.. 编码问题?
【发布时间】:2013-07-28 23:49:22
【问题描述】:

我遇到了一个我无法理解的问题。 试试下面的代码:

$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每个字符串,尽管它们对我们来说看起来一样,但它们是不同的..

【问题讨论】:

  • trim() 是你的朋友

标签: php strcmp


【解决方案1】:

试试这个

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

【讨论】:

  • 成功了!谢谢,但我还是想知道为什么?谁能解释一下?
  • 在 mcrypt_decrypt php 页面上有一条评论提到这个函数添加了空格。我不确定为什么它自己会这样做。 link
猜你喜欢
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2023-01-30
  • 2011-08-29
  • 2018-02-23
  • 1970-01-01
  • 2015-03-26
相关资源
最近更新 更多