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 に答える