当前位置:首页 > PHP

php 实现aes

2026-01-29 21:35:43PHP

AES 加密实现

在 PHP 中实现 AES 加密可以使用 openssl_encryptopenssl_decrypt 函数。以下是 AES-256-CBC 模式的示例代码:

$plaintext = "This is a secret message";
$key = openssl_random_pseudo_bytes(32); // 256-bit key
$iv = openssl_random_pseudo_bytes(16); // 128-bit IV

// 加密
$ciphertext = openssl_encrypt(
    $plaintext,
    'aes-256-cbc',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

// 解密
$decrypted = openssl_decrypt(
    $ciphertext,
    'aes-256-cbc',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

echo "Original: $plaintext\n";
echo "Decrypted: $decrypted\n";

密钥和 IV 生成

安全地生成密钥和初始化向量 (IV) 是 AES 加密的关键:

// 生成 256 位 (32 字节) 随机密钥
$key = bin2hex(openssl_random_pseudo_bytes(32));

// 生成 128 位 (16 字节) 随机 IV
$iv = bin2hex(openssl_random_pseudo_bytes(16));

存储加密数据

加密后的数据通常以 Base64 编码存储:

$encrypted = openssl_encrypt(
    $data,
    'aes-256-cbc',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

$storable = base64_encode($encrypted);

解密存储的数据

从存储格式解密数据:

$encrypted = base64_decode($storable);
$decrypted = openssl_decrypt(
    $encrypted,
    'aes-256-cbc',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

其他 AES 模式

PHP 支持多种 AES 加密模式:

// AES-128-CBC
openssl_encrypt($data, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);

// AES-256-GCM (需要 PHP 7.1+)
openssl_encrypt($data, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);

安全注意事项

确保密钥和 IV 的安全存储,每次加密使用不同的 IV。对于密码加密,考虑使用专门的密码哈希函数如 password_hash 而非 AES。

php 实现aes

以上代码提供了 PHP 中实现 AES 加密的基本方法,可根据具体需求调整加密模式和参数。

标签: phpaes
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…