下面是一个完整的PHP AES加密类的示例代码:
class AES {
private $key;
private $cipher = "AES-128-CBC";
public function __construct($key) {
$this->key = $key;
}
public function encrypt($data) {
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($this->cipher));
$encrypted = openssl_encrypt($data, $this->cipher, $this->key, OPENSSL_RAW_DATA, $iv);
$result = base64_encode($iv . $encrypted);
return $result;
}
public function decrypt($data) {
$data = base64_decode($data);
$iv_length = openssl_cipher_iv_length($this->cipher);
$iv = substr($data, 0, $iv_length);
$encrypted = substr($data, $iv_length);
$decrypted = openssl_decrypt($encrypted, $this->cipher, $this->key, OPENSSL_RAW_DATA, $iv);
return $decrypted;
}
}
// 示例用法
$key = "mysecretkey";
$aes = new AES($key);
$data = "Hello, World!";
$encrypted = $aes->encrypt($data);
echo "Encrypted: " . $encrypted . "\n";
$decrypted = $aes->decrypt($encrypted);
echo "Decrypted: " . $decrypted . "\n";
在上面的代码中,我们定义了一个AES
类,它接受一个密钥作为构造函数的参数。该类包含encrypt
和decrypt
方法,用于加密和解密数据。
在encrypt
方法中,我们首先生成一个随机的初始化向量(IV),然后使用openssl_encrypt
函数对数据进行加密。最后,我们将IV和加密后的数据进行Base64编码,并返回结果。
在decrypt
方法中,我们首先将输入数据进行Base64解码,然后从解码后的数据中提取IV和加密后的数据。最后,我们使用openssl_decrypt
函数对数据进行解密,并返回结果。
在示例用法中,我们创建一个AES
实例,并使用密钥mysecretkey
对数据进行加密和解密。最后,我们打印加密和解密后的结果。
上一篇:php数据实时性(php 实例)
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站