我正在使用以下功能加密和解密
define('KEYVAL',"hgfzhjh");
function encryption($plain_text)
{
$key_value = KEYVAL;
$encrypted_text = mcrypt_ecb(MCRYPT_DES, $key_value, $plain_text, MCRYPT_ENCRYPT);
return $encrypted_text;
}
function decryption($encrypted_text)
{
$key_value = KEYVAL;
$decrypted_text = mcrypt_ecb(MCRYPT_DES, $key_value, $encrypted_text, MCRYPT_DECRYPT);
return $decrypted_text;
}
echo $id = 'abc';
echo "<br />";
$enc = encryption('abc');
echo $dec = decryption($enc);
echo "<br />";
echo $dec;
echo "<br />";
echo strcmp($id,$dec);
虽然 $enc
和 $dec
的回声相同,但
strcmp
的结果为-5。为什么..?
我使用解密结果从数据库中获取数据,但由于两个字符串不相同,因此无法获取数据。 如果我没有正确使用它,请告诉我。
答案 0 :(得分:1)
修剪加密值
$enc = trim(encryption('abc'));
答案 1 :(得分:1)
如果您有疑问,只需 var_dump
您的字符串。 var_dump($dec)
给出 8
的长度,这就是 strcmp
为您提供 -5
强>
这里的解密为字符串末尾提供了额外的空格,因此请使用 rtrim
function decryption($encrypted_text)
{
$key_value = KEYVAL;
$decrypted_text = mcrypt_ecb(MCRYPT_DES, $key_value, $encrypted_text, MCRYPT_DECRYPT);
return rtrim($decrypted_text); //Trimming here
}
顺便问一下......为什么要添加空格?看看这个thread