/**
* 测试
*/
public function actionTest(){
$key = '######AEAD_AES_256_GCM####121212';
$str = '123456sssss';
$encrypt = $this->encrypt($str,$key);
$decrypt = $this->decrypt ($encrypt,$key);
var_dump($decrypt);exit();
}
/**
* 加密
* @param string $data 要被加密的数据
* @param string $key 加密密钥(64位的字符串)
*/
function encrypt($data, $key){
$length = mb_strlen($key, '8bit');
if (!$length === 16) {
return false;
}
$seeds = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = 16;
$iv = substr(str_shuffle(str_repeat($seeds, $length)), 0, $length);
$value = openssl_encrypt(base64_encode($data), 'AES-128-CBC', $key, 0, $iv);
if ($value === false) {
return false;
}
$json = json_encode(compact('iv', 'value'));
if (! is_string($json)) {
return false;
}
return $json;
}
/**
* 解密
* @param string $data 加密数据
* @param string $key 加密密钥
*/
function decrypt ($data, $key){
$length = mb_strlen($key, '8bit');
if (!$length === 16) {
return false;
}
$data = json_decode($data, true);
$iv = $data['iv'];
$decrypted = openssl_decrypt($data['value'], 'AES-128-CBC', $key, 0, $iv);
if ($decrypted === false) {
return false;
}
return base64_decode($decrypted);
}
openssl_encrypt扩展使用aes加密
最新推荐文章于 2024-04-06 00:19:28 发布
这是一个使用AES-128-CBC模式进行加密和解密的PHP代码示例,包括加密函数encrypt()和解密函数decrypt(),其中涉及到了密钥校验、随机初始化向量的生成以及数据的Base64编码和解码。
摘要由CSDN通过智能技术生成