当前位置:首页 > PHP

php实现aes

2026-04-03 16:12:37PHP

PHP实现AES加密解密

AES(高级加密标准)是一种对称加密算法,常用于数据加密。PHP通过openssl扩展提供AES支持,以下是实现方法:

php实现aes

AES-256-CBC加密

function encryptAES($data, $key, $iv) {
    $encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($encrypted);
}

AES-256-CBC解密

function decryptAES($encryptedData, $key, $iv) {
    $decrypted = openssl_decrypt(base64_decode($encryptedData), 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
    return $decrypted;
}

使用方法

$key = 'your-32-byte-encryption-key-here'; // 32字节密钥
$iv = openssl_random_pseudo_bytes(16); // 16字节初始化向量
$data = 'Sensitive information';

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

注意事项

  • 密钥长度必须与所选算法匹配:AES-128需要16字节,AES-192需要24字节,AES-256需要32字节
  • IV(初始化向量)应该是随机生成的,且每次加密都应使用不同的IV
  • 考虑使用openssl_cipher_iv_length()获取特定算法的IV长度
  • 对于密码学安全应用,建议使用专门的库如libsodium(PHP 7.2+内置)

替代方案:使用libsodium(PHP 7.2+)

function sodiumEncrypt($message, $key) {
    $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
    $ciphertext = sodium_crypto_secretbox($message, $nonce, $key);
    return base64_encode($nonce . $ciphertext);
}

function sodiumDecrypt($encrypted, $key) {
    $decoded = base64_decode($encrypted);
    $nonce = mb_substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit');
    $ciphertext = mb_substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit');
    return sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
}

安全建议

  • 永远不要硬编码加密密钥
  • 考虑使用密钥派生函数(如PBKDF2)从密码生成密钥
  • 定期轮换加密密钥
  • 结合使用消息认证码(MAC)确保数据完整性

标签: phpaes
分享给朋友:

相关文章

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…