1

我正在使用以下函数来加密和解密

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。为什么..?

我正在使用解密的结果从数据库中获取数据,但由于两个字符串不相同,因此无法获取数据。如果我没有正确使用它,请告诉我..

4

2 回答 2

1

修剪你的加密值

$enc = trim(encryption('abc'));
于 2013-10-26T07:54:23.760 回答
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

于 2013-10-26T07:56:40.980 回答