当前位置:首页 > PHP

php实现扩展加密解密

2026-01-29 03:36:46PHP

PHP 实现扩展加密解密的方法

使用 OpenSSL 扩展

OpenSSL 是 PHP 中常用的加密扩展,支持 AES、DES、RSA 等多种加密算法。以下是一个 AES-256-CBC 加密解密的示例:

$key = openssl_random_pseudo_bytes(32); // 256-bit key
$iv = openssl_random_pseudo_bytes(16); // 128-bit IV
$data = "Sensitive data";

// 加密
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);

// 解密
$decrypted = openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv);

使用 Sodium 扩展

Sodium 是一个现代加密库,PHP 7.2+ 内置支持。以下是使用 Sodium 进行加密解密的示例:

$key = sodium_crypto_secretbox_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$message = "Secret message";

// 加密
$ciphertext = sodium_crypto_secretbox($message, $nonce, $key);

// 解密
$decrypted = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);

使用 Mcrypt 扩展(已废弃)

虽然 Mcrypt 在 PHP 7.1 中被移除,但在旧版本中仍可使用。以下是 Mcrypt 的示例:

$key = "ThisIsASecretKey";
$data = "Data to encrypt";
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

// 加密
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);

// 解密
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);

使用 Libsodium 进行公钥加密

Libsodium 还支持非对称加密:

$alice_keypair = sodium_crypto_box_keypair();
$alice_public = sodium_crypto_box_publickey($alice_keypair);
$alice_secret = sodium_crypto_box_secretkey($alice_keypair);

$bob_keypair = sodium_crypto_box_keypair();
$bob_public = sodium_crypto_box_publickey($bob_keypair);
$message = "Hello Bob";

// 加密
$nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES);
$encrypted = sodium_crypto_box($message, $nonce, $bob_public, $alice_secret);

// 解密
$decrypted = sodium_crypto_box_open($encrypted, $nonce, $alice_public, $bob_secret);

使用 Hash 进行单向加密

对于密码存储等单向加密场景,可以使用 password_hash:

$password = "user_password";
$hash = password_hash($password, PASSWORD_DEFAULT);

// 验证
if (password_verify($password, $hash)) {
    // 密码匹配
}

注意事项

  • 始终使用强加密算法(如 AES-256、ChaCha20)
  • 确保 IV/nonce 是随机且唯一的
  • 妥善管理加密密钥
  • 对于密码存储,使用专门函数如 password_hash
  • 考虑使用 PHP 7.2+ 的 Sodium 扩展作为首选

php实现扩展加密解密

标签: 加密解密php
分享给朋友:

相关文章

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'loca…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_sh…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Session…