当前位置:首页 > 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 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现伪静态

php实现伪静态

PHP 实现伪静态的方法 伪静态(URL Rewrite)是一种将动态URL转换为看似静态URL的技术,提升SEO友好性和用户体验。以下是几种常见的实现方式: 使用 Apache 的 mod_rew…

php实现进度条

php实现进度条

PHP 实现进度条的方法 使用 HTML 和 CSS 结合 PHP 实现进度条 在 PHP 中,进度条通常通过 HTML 和 CSS 实现,PHP 负责计算进度并更新前端显示。 <di…

php无法实现

php无法实现

PHP 是一种功能强大的服务器端脚本语言,能够实现多种功能,包括动态网页开发、数据库交互、文件操作等。如果遇到“无法实现”的问题,通常是由于以下原因之一: 环境配置问题 确保 PHP 环境正确安装和…

php 抢购实现

php 抢购实现

抢购系统设计要点 高并发抢购系统的核心在于解决超卖问题、保证数据一致性以及提升系统性能。PHP实现需结合数据库、缓存和队列等技术。 数据库层面优化 使用InnoDB引擎的事务特性确保数据一致性。商品…

php rsa 实现

php rsa 实现

PHP RSA 加密与解密实现 生成密钥对 使用 openssl_pkey_new 生成 RSA 密钥对,并通过 openssl_pkey_export 导出私钥。公钥可从密钥对中提取。 $conf…