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

何が起こるか、つまり、どのコードを呼び出し、何を期待し、何を出力するかを教えてください。「解読できない」が何を意味するのかは推測できません。

ただし、すでに1つの提案をすることができます:

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

trim($encrypt)入力データ [ ]をいじらないでください。発信者が文字列をトリミングしたい場合は、発信者に任せてください。そうしないと、入力文字列にトリミングする空白がある場合、渡された文字列とは異なる文字列を暗号化することになります。これは涙で終わるだけです。

于 2011-03-24T13:27:52.843 に答える