如何使用PHP进行数据加密和解密?

在 PHP 中,你可以使用加密算法和相关的扩展库来进行数据加密和解密。以下是使用 PHP 进行数据加密和解密的基本示例:

使用 OpenSSL 扩展进行加密和解密:

  1. 加密:

    php 复制代码
    <?php
    $data = "Hello, World!";
    $key = openssl_random_pseudo_bytes(32); // 生成随机密钥
    
    $iv = openssl_random_pseudo_bytes(16); // 生成随机初始化向量
    
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);
    
    // 存储 $key 和 $iv 以便后续解密
    
    echo "Encrypted Data: $encrypted\n";
    ?>
  2. 解密:

    php 复制代码
    <?php
    $encrypted = "encrypted-data"; // 用加密后的数据替换
    
    // 从存储的地方获取 $key 和 $iv
    
    $decrypted = openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv);
    
    echo "Decrypted Data: $decrypted\n";
    ?>

使用 Sodium 扩展进行加密和解密(PHP 7.2+):

  1. 加密:

    php 复制代码
    <?php
    $data = "Hello, World!";
    $key = sodium_crypto_secretbox_keygen(); // 生成随机密钥
    
    $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); // 生成随机 nonce
    
    $encrypted = sodium_crypto_secretbox($data, $nonce, $key);
    
    // 存储 $key 和 $nonce 以便后续解密
    
    echo "Encrypted Data: " . base64_encode($encrypted) . "\n";
    ?>
  2. 解密:

    php 复制代码
    <?php
    $encrypted = base64_decode("encrypted-data"); // 用加密后的数据替换
    
    // 从存储的地方获取 $key 和 $nonce
    
    $decrypted = sodium_crypto_secretbox_open($encrypted, $nonce, $key);
    
    echo "Decrypted Data: $decrypted\n";
    ?>

确保在实际应用中,密钥(key)和初始化向量(iv/nonce)等敏感信息需要进行安全存储,不应该直接硬编码在代码中。密钥管理和安全存储是确保加密系统安全的关键。

相关推荐
m0_736919103 小时前
C++中的委托构造函数
开发语言·c++·算法
lsx2024064 小时前
Python3 SMTP发送邮件教程
开发语言
懈尘4 小时前
从 Java 1.7 到 Java 21:逐版本深入解析新特性与平台演进
java·开发语言
凉辰4 小时前
使用uni.createInnerAudioContext()播放指定音频(踩坑分享功能)
开发语言·javascript·音视频
hello 早上好4 小时前
05_Java 类加载过程
java·开发语言
PPPPPaPeR.4 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
橙露4 小时前
Java并发编程进阶:线程池原理、参数配置与死锁避免实战
java·开发语言
froginwe114 小时前
C 标准库 - `<float.h>`
开发语言
2501_916008894 小时前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
wxin_VXbishe4 小时前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php