前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php案例:文件的加密解密

php案例:文件的加密解密

作者头像
贵哥的编程之路
发布2023-12-18 12:58:56
1460
发布2023-12-18 12:58:56
举报
文章目录
  • 一、这篇文章会教会你什么?
  • 二、使用步骤
    • 1.引入库
    • 2.效果
    • 解密
  • 总结

一、这篇文章会教会你什么?

在学习一个php案例

二、使用步骤

1.引入库

代码语言:javascript
复制
<?php
function encryptFile($inputFile, $outputFile, $key)
{
    // 读取原始文件内容
    $inputContent = file_get_contents($inputFile);

    // 生成初始化向量(IV)
    /*在对数据进行加密时,为了增强安全性,一般会使用一个随机的初始化向量(IV)进行加密。IV 是一个固定长度的随机值,其作用是在同一个密钥下每次加密时都生成不同的密文,从而增强安全性*/
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));

    // 使用密钥和初始化向量对文件内容进行加密.原因:以便在解密时使用。方便解密
    $encryptedContent = openssl_encrypt($inputContent, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
    //其中参数依次为:原始数据、加密算法、密钥、加密方式、初始化向量。


    // 将初始化向量和加密后的内容合并保存到输出文件中
    $encryptedData = $iv . $encryptedContent;
    file_put_contents($outputFile, $encryptedData);
}
$inputFile = "cyg.txt"; // 原始文件路径
$outputFile = "D:/phpstudy_pro/WWW/cyg.enc"; // 加密后的文件路径
$key = "cyg666"; // 生成一个 256 位随机密钥

encryptFile($inputFile, $outputFile, $key);
echo "文件加密完成!";

2.效果

在这里插入图片描述
在这里插入图片描述

解密

代码语言:javascript
复制
<?php
function decryptFile($inputFile, $outputFile, $key)
{
    // 读取加密后的文件内容
    $encryptedData = file_get_contents($inputFile);

    // 提取初始化向量(IV)
    $ivlen = openssl_cipher_iv_length('aes-256-cbc');
    $iv = substr($encryptedData, 0, $ivlen);

    // 提取加密后的内容
    $encryptedContent = substr($encryptedData, $ivlen);

    // 使用密钥和初始化向量对加密内容进行解密
    $decryptedContent = openssl_decrypt($encryptedContent, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);

    // 将解密后的内容保存到输出文件中
    file_put_contents($outputFile, $decryptedContent);
}

$inputFile = "D:/phpstudy_pro/WWW/cyg.enc"; // 加密后的文件路径
$outputFile = "decrypted.txt"; // 解密后的文件路径
$key = "cyg666"; // 用于加密和解密的固定密钥

decryptFile($inputFile, $outputFile, $key);
echo "文件解密完成!";
在这里插入图片描述
在这里插入图片描述

总结

写完了,谢谢大家

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、这篇文章会教会你什么?
  • 二、使用步骤
    • 1.引入库
      • 2.效果
        • 解密
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档