mcrypt_decrypt 正在返回空响应

mcrypt_decrypt is returning a null repsonse

我可以在 php 中加密字符串,但在调用解密函数时我无法在 php 中解密我的字符串,我得到一个空响应。我究竟做错了什么?我的代码在下面。

<?php


    $txt = "Hello";
    $mykey = "mysecretkey12345";
    $iv_to_pass_to_decryption = 'mysecretpass23456';





    function encrypt($text, $key)
    {
        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_RAND); 
        $iv_to_pass_to_decryption = base64_encode($iv);
        return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv));

    }


    function decrypt($text, $key, $ivdecrypt)
    { 
        $text = base64_decode($text);
        $ivdecrypt = base64_decode($ivdecrypt);
        return base64_decode(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $ivdecrypt));
    }



    $encryptdata = encrypt($txt, $mykey); // encrypt works fine

    $decryptdata = decrypt($encryptdata, $mykey, $iv_to_pass_to_decryption); // Im getting null response from decrypt

    echo 'Encrypt: ' . $encryptdata . ' Decrypt: ' . $decryptdata;



?>

示例回显输出为:

加密:j42DGZVT/cKIWEe5p3289aWGOZCtZ8yN3MuUidi2InM=解密:

我发现了两个问题: a) encrypt 函数将 iv 分配给 local 变量。您可以通过在加密函数的开头包含 global $iv_to_pass_to_decryption; 使其成为全局的。

b) 在解密函数的 return 语句中,您 base_decode 消息。但是您不对其进行编码。只需删除 return.

之后的 base64_decode