如何使用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)等敏感信息需要进行安全存储,不应该直接硬编码在代码中。密钥管理和安全存储是确保加密系统安全的关键。

相关推荐
apcipot_rain1 小时前
C++转Java日记(04)
java·开发语言·c++
云和数据.ChenGuang2 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
蜗牛一步步往上爬6 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
张张123y8 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
冻柠檬飞冰走茶10 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing0311 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊11 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆67512 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩12 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
大白玉米12 小时前
MoxPlayer 弹幕播放器源码智能解析线路管理系统自研内核
php