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

相关推荐
点心的游戏开发世界7 小时前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
事圆则缓9 小时前
Kotlin 协程完全指南
开发语言·kotlin
我爱写代码i9 小时前
BeLink - 支持生成多种URL 缩短网址PHP源码
开发语言·php·短网址php源码
Java后端的Ai之路9 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
统计学小王子10 小时前
数学建模国赛倒计时4天——《统计模型精讲(混合效应模型R语言实现)》
开发语言·数学建模·r语言
知无不研10 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴10 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
dsyyyyy110111 小时前
JS复习,难点,易错点总结
开发语言·javascript·ecmascript
“AI国潮设计-小江”12 小时前
Python实战 | SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
小刘在重生~13 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python