在PHP 7.2中不推荐使用m_crypt()

时间:2018-11-16 11:42:56

标签: php laravel

我正在与使用期望以特定格式加密的数据的API的客户端一起工作,已迁移到Laravel并升级到PHP 7.2,我尝试使用他们提供的加密功能。

<?php
class Encrypt {
    public function encryptData ($data)
    {
        //16
        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
        $hash = $this->getEncryptionKey();
        //Using PKCS7 padding
        $encrypted = openssl_encrypt($data, 'AES-128-CBC', $hash, OPENSSL_RAW_DATA, $iv);
        echo "\niv:\n"; echo base64_encode($iv) ;
        echo "\nencrypted:\n" ;echo base64_encode($encrypted) ;
        //echo "iv:" + base64_encode($iv) + "\n";
        //echo "encrypted:" + base64_encode($encrypted); + "\n";
        return ['iv' => base64_encode($iv), 'ct' => base64_encode($encrypted)];
    }
    private function getEncryptionKey ()
    {
        //update the password and salt with yours
        $password = "somepassword=";
        $salt = 'somesalt';
        $iterations = 1000;
        $keySize = 128;
        $blockSize = 128;
        return hash_pbkdf2("sha1", $password, $salt, $iterations, $keySize / 8, true);
    }
}
?>

但是,似乎mcrypt()自PHP 7.2起已被弃用,还有其他选择吗?

0 个答案:

没有答案