当前位置:首页 > PHP

php实现aes加密

2026-04-03 07:22:51PHP

php实现aes加密

PHP实现AES加密的方法

使用OpenSSL扩展实现AES-256-CBC加密

确保PHP已启用OpenSSL扩展(默认通常已启用)。以下是一个完整的加密与解密示例:

php实现aes加密

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

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

// 解密
$data = base64_decode($encrypted);
$iv = substr($data, 0, 16);
$ciphertext = substr($data, 16);
$decrypted = openssl_decrypt(
    $ciphertext,
    'aes-256-cbc',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

使用Mcrypt扩展(已废弃,PHP 7.1+移除)

虽然不推荐,但在旧版本中可这样实现:

$plaintext = "数据";
$key = md5('密钥', true);
$iv = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);

$ciphertext = mcrypt_encrypt(
    MCRYPT_RIJNDAEL_128,
    $key,
    $plaintext,
    MCRYPT_MODE_CBC,
    $iv
);
$encrypted = base64_encode($iv.$ciphertext);

关键参数说明

  • 密钥长度:AES-128(16字节)、AES-192(24字节)、AES-256(32字节)
  • 加密模式:推荐CBC模式(需IV),也可用GCM(需PHP 7.1+)
  • 填充方式:OpenSSL默认使用PKCS7填充

安全注意事项

  • 始终使用随机生成的IV(初始化向量)
  • 密钥应通过安全方式生成(如openssl_random_pseudo_bytes
  • 考虑将IV和密文一起存储/传输
  • 对高敏感数据建议结合HMAC进行完整性验证

GCM模式示例(PHP 7.1+)

$cipher = "aes-256-gcm";
$tag = "";
$ciphertext = openssl_encrypt(
    $plaintext,
    $cipher,
    $key,
    OPENSSL_RAW_DATA,
    $iv,
    $tag
);
// 解密时需要提供$tag参数

标签: phpaes
分享给朋友:

相关文章

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…

php 无限分类的实现

php 无限分类的实现

无限分类的实现方法 无限分类通常用于构建树形结构数据,如商品分类、多级菜单等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 邻接列表是最简单的实现方式,通过在每个节点中存…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…