当前位置:首页 > PHP

php 实现aes

2026-03-12 17:59:33PHP

PHP 实现 AES 加密解密

PHP 提供了 OpenSSL 扩展来实现 AES 加密解密功能。AES(Advanced Encryption Standard)是一种对称加密算法,支持 128、192 和 256 位密钥长度。

加密方法

function encryptAES($data, $key, $iv) {
    $method = 'aes-256-cbc';
    $encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($encrypted);
}
  • $data:需要加密的明文数据
  • $key:加密密钥,必须是 32 字节长度(256 位)
  • $iv:初始化向量,必须是 16 字节长度(128 位)
  • aes-256-cbc 指定使用 AES-256 算法和 CBC 模式

解密方法

function decryptAES($encryptedData, $key, $iv) {
    $method = 'aes-256-cbc';
    $decrypted = openssl_decrypt(base64_decode($encryptedData), $method, $key, OPENSSL_RAW_DATA, $iv);
    return $decrypted;
}
  • $encryptedData:base64 编码的加密数据
  • 其他参数与加密方法相同

使用示例

$key = 'thisisasecretkeywith32byteslength'; // 32 字节密钥
$iv = 'thisisanivbytes'; // 16 字节 IV
$data = 'Sensitive data to encrypt';

// 加密
$encrypted = encryptAES($data, $key, $iv);
echo "Encrypted: " . $encrypted . "\n";

// 解密
$decrypted = decryptAES($encrypted, $key, $iv);
echo "Decrypted: " . $decrypted . "\n";

注意事项

  • 密钥和 IV 应该安全存储,不要硬编码在代码中
  • 对于生产环境,考虑使用密钥管理系统
  • 每次加密应该使用不同的 IV(初始化向量)
  • 确保 PHP 已安装 OpenSSL 扩展

其他加密模式

除了 CBC 模式,还可以使用其他模式如 GCM(提供认证加密):

php 实现aes

function encryptAESGCM($data, $key) {
    $method = 'aes-256-gcm';
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
    $tag = '';
    $encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv, $tag);
    return base64_encode($iv.$tag.$encrypted);
}

GCM 模式提供了加密和认证功能,适合需要更高安全性的场景。

标签: phpaes
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php实现接口

php实现接口

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

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php搜索功能实现

php搜索功能实现

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