我正在与使用期望以特定格式加密的数据的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起已被弃用,还有其他选择吗?