0

我使用这样的 fn 来加密\解密

<?
//Encrypt Function
function mc_encrypt($encrypt, $mc_key) {
     $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $passcrypt = trim(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $mc_key, trim($encrypt), MCRYPT_MODE_ECB, $iv));
    $encode = base64_encode($passcrypt);
    return $encode;
}

// Decrypt Function
function mc_decrypt($decrypt, $mc_key) {
    $decoded = base64_decode($decrypt);
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $mc_key, trim($decoded), MCRYPT_MODE_ECB, $iv));
    return $decrypted;
}
?>

如果我调用 mc_encrypt('test', 'pass') 所有解密都可以,但如果我调用 mc_encrypt('test=value', 'pass') 我无法解密。为什么?我必须做什么?

4

1 回答 1

1

你应该告诉我们发生了什么,即你调用了什么代码,你期望什么,结果是什么。我们无法猜测“我无法解密”是什么意思。

不过,我已经可以给你一个建议:

$passcrypt = trim(mcrypt_encrypt(
  MCRYPT_RIJNDAEL_256, $mc_key, trim($encrypt), MCRYPT_MODE_ECB, $iv));

不要弄乱输入数据 [ trim($encrypt)]。如果调用者想要修剪字符串,让他们去做。否则,如果您的输入字符串有空白要修剪,您最终将加密与传入的字符串不同的字符串。那只能以泪水告终。

于 2011-03-24T13:27:52.843 回答