Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mcrypt_encrypt()函数在PHP7.2中不起作用吗?_Php - Fatal编程技术网

mcrypt_encrypt()函数在PHP7.2中不起作用吗?

mcrypt_encrypt()函数在PHP7.2中不起作用吗?,php,Php,我有如下加密代码&它在phpversion5.6中工作。但它在PHP 7.2版中不起作用 ** 警告:使用未定义的常量MCRYPT_RIJNDAEL_128-假定 “MCRYPT_RIJNDAEL_128”(这将在未来版本的 (菲律宾) ** 还有其他选择吗 $serviceid="2951"; $secretkey = "fQ5FHy0qzM6ljp97"; function pkcs5_pad ($text, $blocksize) { $pad

我有如下加密代码&它在phpversion5.6中工作。但它在PHP 7.2版中不起作用

**

警告:使用未定义的常量MCRYPT_RIJNDAEL_128-假定 “MCRYPT_RIJNDAEL_128”(这将在未来版本的 (菲律宾)

**

还有其他选择吗

$serviceid="2951";
$secretkey = "fQ5FHy0qzM6ljp97";

function pkcs5_pad ($text, $blocksize)
{
  $pad = $blocksize - (strlen($text) % $blocksize);
  return $text . str_repeat(chr($pad), $pad);
}

function encrypt($plaintext, $key) {
    $plaintext = pkcs5_pad($plaintext, 16);
    $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB);
    $ciphertext_base64 = base64_encode($ciphertext);
    $ciphertext_base64; 
}
$data = $serviceid;
$auth= encrypt($data ,$secretkey); 
加密值为agchnk2xonhhhgyv02xjw==

我在PHP7.2中尝试了以下代码

function encrypt($plaintext, $key) 
{
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-cbc'));
$encrypted = openssl_encrypt($plaintext, 'aes-128-cbc', $key, 0, $iv);
return base64_encode($encrypted . '::' . $iv);
}
但是输出一直在变化,正如您在PHP 7.2.0中看到的那样,mcrypt_encrypt已从PHP 7.2.0中删除


一个关于最佳选择的问题,我找到了我的问题的解决方案。请在下面查看

function encrypt($plaintext,$key)
{
    return base64_encode(openssl_encrypt($plaintext, 'aes-128-ecb', $key, OPENSSL_RAW_DATA));
}

定义“不工作”。您是否收到任何错误、警告或通知?还是意外的结果?总之,快速查看一下应该可以解决问题。@El_Vanja I在问题中添加了警告。警告:未定义常量MCRYPT_RIJNDAEL_128的使用-假定“MCRYPT_RIJNDAEL_128”(这将在PHP的未来版本中引发错误),因为已从PHP7.2.x中删除了“MCRYPT”。由于您的mcrypt加密使用AES(=Rijndael 128)ECB模式,您也应该将其用于OpenSSL(因此省略所有关于“iv”(初始化向量)的代码)。这样可以吗?函数加密($明文,$key){$iv=OpenSSL_随机_伪_字节(OpenSSL_密码_iv_长度('AES-128-cbc');$encrypted=OpenSSL_加密($plaintext,$aes-128-cbc',$key,0,$iv);return base64_encode($encrypted.:'.$iv);}mcrypt_encrypt()函数在PHP7.2中不起作用吗?真正的答案是否定的。