当前位置:首页 > 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实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php 登录实现

php 登录实现

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

php实现接口

php实现接口

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

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…