php加密压缩文件
Posted Thinker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php加密压缩文件相关的知识,希望对你有一定的参考价值。
前言
近几日,用爬虫采集的了一些数据,存放到硬盘中,随着数据量越来越多,所以想上传到网盘当中,可是不加下密又觉得不放心,
所以开始用php的zip模块进行压缩加密.
开始
$zipArc = new ipArchive();
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);
参考资料
以上是关于php加密压缩文件的主要内容,如果未能解决你的问题,请参考以下文章