当前位置:首页 > PHP

aes php实现

2026-02-14 12:46:18PHP

PHP 实现 AES 加密/解密

PHP 内置的 openssl 扩展提供了 AES 加密功能,支持多种模式(如 CBC、ECB 等)和填充方式。以下是完整的实现示例:

AES 加密

function aesEncrypt($data, $key, $iv) {
    $cipher = "aes-256-cbc"; // 使用 AES-256-CBC 模式
    $options = OPENSSL_RAW_DATA;
    $encrypted = openssl_encrypt($data, $cipher, $key, $options, $iv);
    return base64_encode($encrypted); // 返回 Base64 编码结果
}

AES 解密

function aesDecrypt($encryptedData, $key, $iv) {
    $cipher = "aes-256-cbc";
    $options = OPENSSL_RAW_DATA;
    $decrypted = openssl_decrypt(
        base64_decode($encryptedData), 
        $cipher, 
        $key, 
        $options, 
        $iv
    );
    return $decrypted;
}

使用示例

$key = "your_secret_key_32_bytes_long"; // 必须为 32 字节(256 位)
$iv = "initialization_vec"; // 必须为 16 字节(128 位)
$data = "Sensitive data to encrypt";

// 加密
$encrypted = aesEncrypt($data, $key, $iv);
echo "Encrypted: " . $encrypted . "\n";

// 解密
$decrypted = aesDecrypt($encrypted, $key, $iv);
echo "Decrypted: " . $decrypted . "\n";

关键参数说明

  • $key:密钥长度需与算法匹配(如 AES-256 需 32 字节密钥)
  • $iv:初始化向量(IV)必须唯一且随机,CBC 模式要求 16 字节
  • $cipher:支持的算法列表可通过 openssl_get_cipher_methods() 获取

安全建议

  1. 使用强随机密钥和 IV(可通过 random_bytes(32) 生成)
  2. 避免硬编码密钥,建议从环境变量读取
  3. 对加密结果进行 HMAC 验证以确保完整性

其他模式示例

如需使用 ECB 模式(不推荐,仅演示):

aes php实现

$cipher = "aes-256-ecb"; // ECB 模式无需 IV
$encrypted = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA);

注:ECB 模式安全性较低,推荐优先使用 CBC 或 GCM 模式。

标签: aesphp
分享给朋友:

相关文章

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 // 创建…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…