当前位置:首页 > PHP

php实现扩展加密解密

2026-04-03 09:34:18PHP

PHP 扩展加密解密方法

使用 OpenSSL 扩展

PHP 的 OpenSSL 扩展提供了强大的加密解密功能。以下是一个使用 AES-256-CBC 加密算法的示例:

$plaintext = "需要加密的数据";
$key = openssl_random_pseudo_bytes(32); // 256位密钥
$iv = openssl_random_pseudo_bytes(16); // 初始化向量

// 加密
$ciphertext = openssl_encrypt(
    $plaintext,
    'aes-256-cbc',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

// 解密
$original_plaintext = openssl_decrypt(
    $ciphertext,
    'aes-256-cbc',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

使用 Sodium 扩展

PHP 7.2+ 内置了 Sodium 扩展,提供了现代加密算法:

$plaintext = "敏感信息";
$key = sodium_crypto_secretbox_keygen(); // 生成密钥
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);

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

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

使用 Libsodium 兼容函数

对于不支持 Sodium 扩展的环境,可以使用 Libsodium 兼容函数:

$plaintext = "待加密内容";
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);

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

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

密码哈希处理

对于密码存储推荐使用 password_hash() 函数:

php实现扩展加密解密

$password = "用户密码";
$hash = password_hash($password, PASSWORD_ARGON2ID);

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

注意事项

  • 始终使用强加密算法(如 AES-256、ChaCha20)
  • 确保每次加密使用不同的初始化向量(IV)或 nonce
  • 妥善保管加密密钥
  • 考虑使用 PHP 7.2+ 的内置加密功能
  • 对于密码存储优先使用 Argon2 或 bcrypt 算法

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

相关文章

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searchT…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php搜索功能实现

php搜索功能实现

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

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…