当前位置:首页 > PHP

aes php实现

2026-01-29 14:41:43PHP

AES 加密在 PHP 中的实现

PHP 提供了内置函数支持 AES 加密,主要通过 openssl_encryptopenssl_decrypt 实现。以下是 AES-256-CBC 模式的完整实现示例:

加密函数

function encryptAES($data, $key, $iv) {
    $cipher = "aes-256-cbc";
    $options = OPENSSL_RAW_DATA;
    $encrypted = openssl_encrypt($data, $cipher, $key, $options, $iv);
    return base64_encode($encrypted);
}

解密函数

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

密钥和 IV 生成

AES-256 需要 32 字节密钥和 16 字节初始化向量(IV),可以使用以下方法生成:

aes php实现

$key = openssl_random_pseudo_bytes(32); // 256位密钥
$iv = openssl_random_pseudo_bytes(16);  // 128位IV

使用示例

$plaintext = "Sensitive data";
$key = hex2bin("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef");
$iv = hex2bin("abcdef9876543210abcdef9876543210");

$encrypted = encryptAES($plaintext, $key, $iv);
$decrypted = decryptAES($encrypted, $key, $iv);

echo "Encrypted: " . $encrypted . "\n";
echo "Decrypted: " . $decrypted;

安全注意事项

密钥应当通过安全方式存储,避免硬编码在代码中。IV 应当每次加密都重新生成,不需要保密但需要与密文一起存储。

对于需要存储的加密数据,建议将 IV 和密文一起存储:

aes php实现

$encryptedData = base64_encode($iv) . ':' . $encrypted;

解密时分离 IV 和密文:

list($ivPart, $dataPart) = explode(':', $encryptedData, 2);
$iv = base64_decode($ivPart);
$decrypted = decryptAES($dataPart, $key, $iv);

其他 AES 模式

PHP 支持多种 AES 模式,可通过修改 $cipher 参数切换:

  • aes-128-cbc (128位密钥)
  • aes-192-cbc (192位密钥)
  • aes-256-gcm (GCM 认证加密模式)

GCM 模式需要额外处理认证标签:

function encryptGCM($data, $key, $iv, &$tag) {
    return openssl_encrypt($data, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);
}

function decryptGCM($data, $key, $iv, $tag) {
    return openssl_decrypt($data, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);
}

标签: aesphp
分享给朋友:

相关文章

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…

php实现注册登陆

php实现注册登陆

PHP 注册功能实现 创建数据库表结构(MySQL示例): CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php session实现购物车

php session实现购物车

PHP Session 实现购物车 初始化 Session 确保在使用 Session 前调用 session_start() 函数。通常放在 PHP 文件的最顶部。 <?php sessio…