php加密压缩文件

前言

近几日,用爬虫采集的了一些数据,存放到硬盘中,随着数据量越来越多,所以想上传到网盘当中,可是不加下密又觉得不放心,
所以开始用PHP的zip模块进行压缩加密.

开始


$zipArc = new \ZipArchive();

if ($zipArc->open('/home/test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE) === true) {

    //设置密码 注意此处不是加密,仅仅是设置密码
    if (!$zipArc->setPassword('password')) {
        throw new RuntimeException('Set password failed');
    }

    //往压缩包内添加文件
    $zipArc->addFile('/home/test.png', '1/test.png');

    //加密文件 此处文件名及路径是压缩包内的
    if (!$zipArc->setEncryptionName('1/test.png', ZipArchive::EM_AES_256)) {
        throw new RuntimeException('Set encryption failed');
    }

}

$zipArc->close();

注意事项

1 PHP7.2以下不支持加密

php7.2 以下是不支持加密的,我们看一下php官方文档中的解释

从PHP 7.2.0和libzip 1.2.0开始,密码用于解压缩归档,也是ZipArchive :: setEncryptionName() 和ZipArchive :: setEncryptionIndex()的默认密码。

以前,此功能仅设置用于解压缩存档的密码; 它没有将非密码保护的ZipArchive 变成受密码保护的ZipArchive。

也就是说php7.2之前,setPassword(‘password‘)这个方法仅仅是设置setEncryptionName()和setEncryptionIndex()的默认密码,却没有进行加密操作!!!,就问你坑不坑!!

2 方法找不到

提示没有setEncryptionName和setEncryptionIndex方法时,请编译时zip模块时用以下参数

--with-libzip
--enable-zip

3 目录结构问题

待压缩的文件目录,比说说是/home/test/a.png
压缩后,你发现压缩包内的目录结构是/home/test/a.png,
也就是说压缩包原封不动的保持了原来文件的目录.可是我们想自定义压缩包目录怎么办呢?


$a = '/home/test.png';
$b = '1/test.png';

//$a是待添加的文件路径  $b是压缩包内的路径
$zipArc->addFile($a, $b);

参考资料

原文地址:https://www.cnblogs.com/liuyublog/p/9606104.html

时间: 2024-10-18 18:22:48

php加密压缩文件的相关文章

linux下文件加密压缩和解压的方法

一.用tar命令 对文件加密压缩和解压 压缩:tar -zcf  - filename |openssl des3 -salt -k password | dd of=filename.des3 此命令对filename文件进行加码压缩 生成filename.des3加密压缩文件, password 为加密的密码. 解压:dd if=filename.des3 |openssl des3 -d -k password | tar zxf - 注意命令最后面的“-”  它将释放所有文件, -k p

linux 下文件加密压缩和解压的方法

方法一:用tar命令 对文件加密压缩和解压 压缩: [html] view plain copytar -zcf - filename |openssl des3 -salt -k password | dd of=filename.des3 此命令对filename文件进行加码压缩 生成filename.des3加密压缩文件, password 为加密的密码 解压: [html] view plain copydd if=filename.des3 |openssl des3 -d -k pa

DirectX 安装报错: 不能信任一个安装所需的压缩文件,请检查加密服务是否启用并且cabinet文件证书是否有效

DirectX 安装报错 不能信任一个安装所需的压缩文件,请检查加密服务是否启用并且cabinet文件证书是否有效 是直播软件open broadcaster software,这个软件安装的时候提示"your system is missing DirectX components that Open Broadcaster Software requires.Would you like to download them?"然后点是,就跳转微软的官方下载页面了. 下载dxwebse

小例子: 压缩文件时的加密与解密(read + openssl + tar + dd)

1.有的文件需要加密一下 2.有的文件夹需要加密一下 分析: 文件或文件夹加密时需考量的几个问题? 文件夹自动补全时后缀有反斜杠处理规则 单个文件加密时命名的规则 >脚本命令的格式规定为./ss {unEncryptFile | unEncryptDir} >先判断第一个参数是文件还是文件夹 1.文件夹时 > 判断文件夹是否有反斜杠 > 以文件夹的名称做为生成的压缩包名称 2.文件时 > 此处加密时linux中文件后缀去掉 > 当使用压缩和解压缩时后缀就挺有意义的 &g

zip4j加密压缩、解压缩文件、文件夹

原文:http://blog.csdn.net/k21325/article/details/54376188 1.首先,引用到zip4j的第三方类库,感谢作者的无私奉献,官网打不开,这里就不贴了,下面是maven仓库的jar包 <!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j --> <dependency> <groupId>net.lingala.zip4j</groupId>

java中文件如何加密压缩?

目录 文件加密压缩 1.单个文件加密压缩 2.多文件加密压缩 @(终于等到你) 文件加密压缩 在现如今已经可以实现大部分功能的互联网需求中,安全成为了需要的非必需品,工作需求中会遇到对导出的 excel 报表 做加密压缩的问题,今天有时间总结一下,我这里简单列举功能代码,连带其它代码文末会一并给出. 1.单个文件加密压缩 单个文件加密方法,需传输 3 个参数:被压缩源文件,压缩目标文件和加密密钥,如下 /** * @Title: encrypt_zip * @Description:将指定路径下

ubuntu文件定时加密压缩

? 1 2 3 4 5 6 7 8 9 #!/bin/sh #zip.sh<br><br>DATE=`date -d yesterday +"%Y%m%d"` <br>#password PASS="123456" if [ -d /www/home/upload/image/${DATE}/JPG ]; then    (cd /www/home/upload/image/${DATE}/ ; zip -r -P $PASS .

Linux下创建加密的压缩文件

code[class*="language-"],pre[class*="language-"] { color: #333; background: none; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; text-align: left; white-space: pre; word-spacing: normal; line-height: 1.4

C#压缩文件夹

using System;using System.Collections.Generic;using System.Text; ///第三方dllusing ICSharpCode.SharpZipLib;using ICSharpCode.SharpZipLib.Checksums;using ICSharpCode.SharpZipLib.Zip;using System.IO;using log4net;using log4net.Config;using System.Text.Reg