豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: AES加密PHP源码

🤖 Ai回答:
以下是使用 PHP 实现 AES 加密的完整示例代码,支持 AES-128-CBC 模式(常见且安全的模式之一),并包含加密和解密功能。

php
<?php

class AES {
private $key; // 加密密钥,必须是 16、24 或 32 字节(对应 AES-128、AES-192、AES-256)
private $iv; // 初始化向量,必须是 16 字节

public function __construct($key, $iv) {
$this-key = $key;
$this-iv = $iv;
}

/**
* AES 加密
* @param string $data 要加密的数据
* @return string 加密后的数据(Base64 编码)
*/
public function encrypt($data) {
// 使用 AES-128-CBC 模式
$encrypted = openssl_encrypt($data, 'AES-128-CBC', $this-key, OPENSSL_RAW_DATA, $this-iv);

// 返回 Base64 编码的密文
return base64_encode($encrypted);
}

/**
* AES 解密
* @param string $data 要解密的数据(Base64 编码)
* @return string 解密后的数据
*/
public function decrypt($data) {
// 解码 Base64 数据
$encryptedData = base64_decode($data);

// 解密
$decrypted = openssl_decrypt($encryptedData, 'AES-128-CBC', $this-key, OPENSSL_RAW_DATA, $this-iv);

return $decrypted;
}
}

// 示例使用
$key = 'your-16-or-24-or-32-byte-key-here'; // 必须是 16、24 或 32 字节
$iv = 'your-16-byte-iv-here'; // 必须是 16 字节

$aes = new AES($key, $iv);

// 要加密的数据
$data = Hello, World! This is a secret message.;

// 加密
$encrypted = $aes-encrypt($data);
echo 加密结果: 、$encrypted 、\n;

// 解密
$decrypted = $aes-decrypt($encrypted);
echo 解密结果: 、$decrypted 、\n;
?

🔐 注意事项:

1、密钥长度:
AES 支持 128、192、256 位密钥。
PHP 中使用 `openssl_encrypt` 时,密钥长度必须是 16(AES-128)、24(AES-192)或 32(AES-256)字节。
建议使用 `openssl_random_pseudo_bytes(32)` 生成安全密钥。

2、IV(初始化向量):
必须是 16 字节(AES 块大小)。
不能重复使用,但可以公开传输(通常与密文一起发送)。
建议使用 `openssl_random_pseudo_bytes(16)` 生成。

3、加密模式:
示例使用 `AES-128-CBC`,这是常用且安全的模式。
更安全的模式如 `GCM` 可以使用,但需要 PHP 7.1+ 和 `openssl_encrypt` 支持。

4、安全性建议:
密钥和 IV 应该安全存储,不要硬编码在代码中。
使用 HTTPS 传输密文。
考虑使用 `openssl_random_pseudo_bytes()` 生成随机密钥和 IV。

✅ 安全生成密钥和 IV 的示例:

php
// 生成安全密钥(32 字节,AES-256)
$key = openssl_random_pseudo_bytes(32);
// 生成 IV(16 字节)
$iv = openssl_random_pseudo_bytes(16);

// 存储或传输 key 和 iv(例如保存到数据库或配置文件)
echo 密钥: 、bin2hex($key) 、\n;
echo IV: 、bin2hex($iv) 、\n;

🔄 更安全的模式(推荐):AES-256-GCM

php
class AESGCM {
private $key;

public function __construct($key) {
$this-key = $key;
}

public function encrypt($data, $aad = '') {
$iv = openssl_random_pseudo_bytes(12); // GCM 使用 12 字节 IV
$encrypted = openssl_encrypt($data, 'aes-256-gcm', $this-key, OPENSSL_RAW_DATA, $iv, $tag, $aad);
return base64_encode($iv 、$tag 、$encrypted);
}

public function decrypt($data, $aad = '') {
$data = base64_decode($data);
$iv = substr($data, 0, 12);
$tag = substr($data, 12, 16);
$encrypted = substr($data, 28);
$decrypted = openssl_decrypt($encrypted, 'aes-256-gcm', $this-key, OPENSSL_RAW_DATA, $iv, $tag, $aad);
return $decrypted;
}
}

注意:GCM 模式提供认证加密(AEAD),比 CBC 更安全,推荐在新项目中使用。

✅ 总结

使用 `AES-128-CBC` 是安全的,但需注意 IV 和密钥管理。
推荐使用 `AES-256-GCM` 模式以获得更强的安全性。
密钥和 IV 必须安全生成和管理。

如需进一步支持,可提供具体需求(如密钥管理、前后端互通等)。

Ai作答

📣 商家广告


取名

香港vps

店名

广告招商

广告招商


0

IP地址: 232.50.64.172

搜索次数: 4

提问时间: 2025-11-10 16:01:27

🛒 域名购买
z-j.net
cdn.hk.cn
965.net.cn
souru.com.cn
25.gs
wg.gs
2111.top
a-s.cn
389.net.cn
app.hl.cn

❓️ 热门提问
国外vps建站便宜
做服务器的厂商
httpd服务器
高防服务器是什么原理
高密度服务器
香港vps租用
html设计网站
新网云vps
电脑进服务器
短域名服务
豌豆Ai站群搜索引擎系统

🌐 域名评估
ff.ah.cn
wk.gs
osmu.cn
n-f.cn
v.gz.cn
oo.hn.cn
65.hk
eelh.cn
zkao.cn
mggg.com.cn

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
域名抢注工具  谷哥seo  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 84809 84810 84811 下一篇