php加密壓縮檔

來源:互聯網
上載者:User

標籤:libz   解釋   資料量   自訂   支援   結構   --   檔案夾   png   

前言

近幾日,用爬蟲採集的了一些資料,存放到硬碟中,隨著資料量越來越多,所以想上傳到網盤當中,可是不加下密又覺得不放心,
所以開始用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);


參考資料
  • php ziparchive壓縮檔夾時,Zip檔案目錄結構不對
  • 官方文檔 ZipArchive class

php加密壓縮檔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.