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

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

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

  1. 加密:

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

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

相关推荐

  1. 如何使用PHP进行数据加密解密

    2023-12-16 11:38:05       57 阅读
  2. Php 如何使用进程

    2023-12-16 11:38:05       25 阅读
  3. PHP使用AES进行解密

    2023-12-16 11:38:05       37 阅读
  4. 如何使用PHP进行邮件发送?

    2023-12-16 11:38:05       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 11:38:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 11:38:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 11:38:05       82 阅读
  4. Python语言-面向对象

    2023-12-16 11:38:05       91 阅读

热门阅读

  1. Python 全栈体系【四阶】(五)

    2023-12-16 11:38:05       46 阅读
  2. MySQL主要特点

    2023-12-16 11:38:05       45 阅读
  3. C语言做一个恶作剧关机程序

    2023-12-16 11:38:05       58 阅读
  4. 阿赵的虚幻引擎(UE)学习笔记

    2023-12-16 11:38:05       76 阅读
  5. 数据采集方法

    2023-12-16 11:38:05       54 阅读
  6. 用QTextStream和QFile在读取文件上面有什么区别

    2023-12-16 11:38:05       60 阅读
  7. ORB-SLAM3中的地图管理与编程

    2023-12-16 11:38:05       66 阅读
  8. vue3路由跳转及传参

    2023-12-16 11:38:05       57 阅读
  9. 数据结构-数据结构导论

    2023-12-16 11:38:05       66 阅读
  10. Pydantic 中 validator 和 validators 的区别

    2023-12-16 11:38:05       53 阅读
  11. 短地址漏洞

    2023-12-16 11:38:05       52 阅读
  12. 2024 年科技领域的重大创新思想

    2023-12-16 11:38:05       96 阅读