当前位置:首页 > 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),可以使用以下方法生成:

$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 和密文一起存储:

$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);
}

aes php实现

标签: aesphp
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

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

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开:…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现递归

php实现递归

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

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="uploa…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE o…