当前位置:首页 > PHP

php 实现aes

2026-03-12 17:59:33PHP

php 实现aes

PHP 实现 AES 加密解密

PHP 提供了 OpenSSL 扩展来实现 AES 加密解密功能。AES(Advanced Encryption Standard)是一种对称加密算法,支持 128、192 和 256 位密钥长度。

php 实现aes

加密方法

function encryptAES($data, $key, $iv) {
    $method = 'aes-256-cbc';
    $encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($encrypted);
}
  • $data:需要加密的明文数据
  • $key:加密密钥,必须是 32 字节长度(256 位)
  • $iv:初始化向量,必须是 16 字节长度(128 位)
  • aes-256-cbc 指定使用 AES-256 算法和 CBC 模式

解密方法

function decryptAES($encryptedData, $key, $iv) {
    $method = 'aes-256-cbc';
    $decrypted = openssl_decrypt(base64_decode($encryptedData), $method, $key, OPENSSL_RAW_DATA, $iv);
    return $decrypted;
}
  • $encryptedData:base64 编码的加密数据
  • 其他参数与加密方法相同

使用示例

$key = 'thisisasecretkeywith32byteslength'; // 32 字节密钥
$iv = 'thisisanivbytes'; // 16 字节 IV
$data = 'Sensitive data to encrypt';

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

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

注意事项

  • 密钥和 IV 应该安全存储,不要硬编码在代码中
  • 对于生产环境,考虑使用密钥管理系统
  • 每次加密应该使用不同的 IV(初始化向量)
  • 确保 PHP 已安装 OpenSSL 扩展

其他加密模式

除了 CBC 模式,还可以使用其他模式如 GCM(提供认证加密):

function encryptAESGCM($data, $key) {
    $method = 'aes-256-gcm';
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
    $tag = '';
    $encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv, $tag);
    return base64_encode($iv.$tag.$encrypted);
}

GCM 模式提供了加密和认证功能,适合需要更高安全性的场景。

标签: phpaes
分享给朋友:

相关文章

php实现socket

php实现socket

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

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php 实现无限分类

php 实现无限分类

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、菜单管理等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的实现方式,每个分类记录存储其父…

php array实现

php array实现

PHP 数组实现 PHP 数组是一种灵活的数据结构,可以存储多个值。以下是几种常见的实现方式: 索引数组 索引数组使用数字作为键名,默认从0开始递增。 $fruits = array("Apple…