当前位置:首页 > PHP

php实现aes加密

2026-01-29 01:33:33PHP

PHP 实现 AES 加密

PHP 提供了 openssl_encryptopenssl_decrypt 函数来实现 AES 加密和解密。AES(高级加密标准)是一种对称加密算法,支持 128、192 和 256 位密钥长度。

php实现aes加密

加密示例代码

以下是一个完整的 AES-256-CBC 加密示例:

php实现aes加密

$plaintext = "需要加密的数据";
$key = "0123456789abcdef0123456789abcdef"; // 32字节密钥(AES-256)
$iv = openssl_random_pseudo_bytes(16); // 初始化向量

$ciphertext = openssl_encrypt(
    $plaintext,
    'AES-256-CBC',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

$result = base64_encode($iv.$ciphertext);
echo "加密结果: ".$result;

解密示例代码

$encrypted = base64_decode($result);
$iv = substr($encrypted, 0, 16);
$ciphertext = substr($encrypted, 16);

$plaintext = openssl_decrypt(
    $ciphertext,
    'AES-256-CBC',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

echo "解密结果: ".$plaintext;

注意事项

  • 密钥长度必须与所选算法匹配:AES-128 需要 16 字节,AES-192 需要 24 字节,AES-256 需要 32 字节
  • 初始化向量(IV)应该是随机且唯一的,每次加密都应生成新的 IV
  • 存储加密数据时,通常需要同时存储 IV(无需保密)
  • 考虑使用 HMAC 进行数据完整性验证

其他可用模式

除了 CBC 模式,PHP 还支持:

  • AES-128/192/256-ECB(不推荐,安全性较低)
  • AES-128/192/256-CTR
  • AES-128/192/256-GCM(推荐,提供认证加密)

标签: phpaes
分享给朋友:

相关文章

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php 实现登录

php 实现登录

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

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php 实现无限分类

php 实现无限分类

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