php案例:文件的加密解密

简介: php案例:文件的加密解密

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

学习一个php案例

二、使用步骤

1.引入库

<?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.效果

解密

<?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 "文件解密完成!";

总结

写完了,谢谢大家


相关文章
|
1月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
138 5
|
3月前
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
4月前
|
存储 安全 数据安全/隐私保护
Hyper V文件复制安全:加密与访问控制
在Hyper-V环境中,确保文件复制的安全性至关重要。主要措施包括:启用数据加密、使用HTTPS协议和磁盘加密技术(如BitLocker)保护数据传输和存储;通过身份验证、权限管理和审核日志控制访问;定期更新补丁、实施网络隔离及制定备份恢复策略。这些多层次的安全措施共同防止未经授权的访问和数据泄露,保障数据安全。
Hyper V文件复制安全:加密与访问控制
|
7月前
|
Linux PHP 数据安全/隐私保护
2024授权加密系统PHP网站源码
2024授权加密系统PHP网站源码
201 58
|
9月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
283 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
9月前
|
数据安全/隐私保护 Python
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
如何使用Python的zipfile模块生成密码表并尝试暴力破解加密的ZIP压缩文件。
179 1
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
|
9月前
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
120 0
|
10月前
|
人工智能 IDE 开发工具
Python实行任意文件的加密—解密
Python实行任意文件的加密—解密
77 2
|
10月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
10月前
|
人工智能 IDE 开发工具
Python实行任意文件的加密—解密
Python实行任意文件的加密—解密
93 1