在CodeIgniter框架开发中,使用OpenSSL扩展实现AES加密算法是一种安全且通用的做法。相比已被废弃的MCrypt,OpenSSL在PHP 7及以上版本中更稳定,也符合现代加密标准。我们可以在CodeIgniter中封装一个服务类,直接调用openssl_encrypt和openssl_decrypt函数完成AES加密与解密。

一、环境准备与扩展检查
首先要确认PHP环境中已启用OpenSSL扩展。在命令行执行以下代码可检测:
<?php
// 检查OpenSSL扩展是否加载
if (!extension_loaded('openssl')) {
die('OpenSSL扩展未启用,请在php.ini中开启');
}
// 查看支持的AES加密方法
$methods = openssl_get_cipher_methods();
foreach ($methods as $m) {
if (strpos($m, 'aes') !== false) {
echo $m . PHP_EOL;
}
}
?>
二、在CodeIgniter中封装AES工具类
我们可以在application/libraries目录下创建Aes_cipher.php文件,利用OpenSSL实现AES-256-CBC模式加密。注意密钥长度应为32字节,初始化向量为16字节。
1. 加密类代码结构
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Aes_cipher {
private $key;
private $iv;
private $method = 'AES-256-CBC';
public function __construct($params = array()) {
// 从配置或参数中获取密钥和向量
$this->key = isset($params['key']) ? $params['key'] : 'ipipp_com_32byte_secret_key_demo';
$this->iv = isset($params['iv']) ? $params['iv'] : '1234567890123456';
}
// 加密方法
public function encrypt($plaintext) {
$ciphertext = openssl_encrypt($plaintext, $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv);
return base64_encode($ciphertext);
}
// 解密方法
public function decrypt($ciphertext) {
$decoded = base64_decode($ciphertext);
return openssl_decrypt($decoded, $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv);
}
}
?>
2. 在控制器中调用
加载自定义库后,即可对业务数据进行加解密处理:
<?php
class User extends CI_Controller {
public function index() {
$this->load->library('aes_cipher', array(
'key' => 'ipipp_com_32byte_secret_key_demo',
'iv' => '1234567890123456'
));
$data = '用户手机号13800138000';
$enc = $this->aes_cipher->encrypt($data);
echo '密文:' . $enc . '<br>';
echo '明文:' . $this->aes_cipher->decrypt($enc);
}
}
?>
三、关键参数说明
| 参数 | 说明 | 示例值 |
|---|---|---|
| method | 加密算法与模式 | AES-256-CBC |
| key | 密钥,长度需匹配算法 | 32字节字符串 |
| iv | 初始化向量,CBC模式必填 | 16字节字符串 |
四、注意事项
- 不要将密钥硬编码在公开代码中,应使用CodeIgniter配置文件或环境变量。
- IV不需要保密,但同一密钥下不应重复使用相同IV。
- 若需兼容旧系统,可选用AES-128-CBC并将密钥设为16字节。
OpenSSL提供的AES实现经过广泛验证,在CodeIgniter中直接封装调用,比依赖第三方未维护库更可靠。
通过上述方式,开发者可以在CodeIgniter框架内以标准OpenSSL扩展完成AES加密算法落地,满足接口传输与本地存储的加密需求。
CodeIgniterOpenSSLAES加密PHP加密加密库修改时间:2026-07-24 18:06:21