当前位置:首页 > PHP

php实现加密

2026-01-29 11:42:22PHP

PHP 加密方法

PHP 提供了多种加密方式,可以根据需求选择不同的方法。以下是常见的加密实现方式:

使用 password_hash 进行密码哈希

password_hash 是 PHP 推荐的密码哈希函数,支持多种算法如 PASSWORD_DEFAULT 和 PASSWORD_BCRYPT。

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

验证密码时使用 password_verify:

php实现加密

$isValid = password_verify($password, $hashedPassword);

使用 OpenSSL 进行对称加密

OpenSSL 扩展提供了 AES 等对称加密算法的支持。

$data = "sensitive_data";
$key = openssl_random_pseudo_bytes(32);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));

$encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);
$decrypted = openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv);

使用 hash 函数进行哈希计算

hash 函数支持多种哈希算法如 sha256、md5 等。

php实现加密

$data = "data_to_hash";
$hash = hash('sha256', $data);

使用 sodium 扩展进行现代加密

PHP 7.2+ 内置的 sodium 扩展提供了更安全的加密方式。

$key = sodium_crypto_secretbox_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$ciphertext = sodium_crypto_secretbox("message", $nonce, $key);
$plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);

使用 crypt 函数进行传统加密

crypt 是较早的加密函数,但仍然可用。

$hashed = crypt('password', '$2a$10$usesomesillystringforsalt$');

注意事项

  • 密码存储应使用 password_hash,而不是直接哈希
  • 加密密钥需要安全存储,不能硬编码在代码中
  • 对于需要解密的场景,确保 IV 或 nonce 与密文一起存储
  • 定期检查并更新使用的加密算法,避免使用已弃用的方法

标签: php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现打印功能

php实现打印功能

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

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (in…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现递归

php实现递归

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

php 实现自动收货

php 实现自动收货

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