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
我可以在 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