首頁 >後端開發 >Golang >如何在 Go 1.2 中解壓縮受密碼保護的 ZIP 檔案?

如何在 Go 1.2 中解壓縮受密碼保護的 ZIP 檔案?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 09:09:03601瀏覽

How to Unzip Password-Protected ZIP Files in Go 1.2?

在Go 1.2 中解壓縮受密碼保護的ZIP 檔案

Go 1.2 中的archive/zip 套件提供了處理處理的基本功能,但缺乏支援密碼保護。若要解壓縮受密碼保護的 ZIP 文件,可以利用 os/exec 套件呼叫外部工具,例如 7zip。

為此,請按照以下步驟操作:

  1. 建立受密碼保護的ZIP 檔案: 使用7zip 工具建立範例ZIP 文件,指定密碼和加密演算法:
7za a sample.zip name.txt -p"your_password" -mem=AES256
  1. 提取帶密碼的ZIP 檔案: 使用下列程式碼擷取受密碼保護的ZIP 檔案:
<code class="go">import (
    "fmt"
    "os/exec"
)

func extractZipWithPassword() {
    fmt.Printf("Unzipping `%s` to directory `%s`\n", zip_path, extract_path)
    commandString := fmt.Sprintf(`7za e %s -o%s -p"%s" -aoa`, zip_path, extract_path, zip_password)
    commandSlice := strings.Fields(commandString)
    fmt.Println(commandString)
    c := exec.Command(commandSlice[0], commandSlice[1:]...)
    e := c.Run()
    checkError(e)
}</code>

在此程式碼片段中:

  • zip_path 是受密碼保護的ZIP 檔案的路徑。
  • extract_path 是將保存解壓縮檔案的目錄的路徑。
  • zip_password 是 ZIP 檔案的密碼。
  1. 範例程式:使用以下完整的範例程式來示範流程:
<code class="go">// Shows how to extract an passsword encrypted zip file using 7zip.
// By Larry Battle <https://github.com/LarryBattle>
// Answer to http://stackoverflow.com/questions/20330210/golang-1-2-unzip-password-protected-zip-file
// 7-zip.chm - http://sevenzip.sourceforge.jp/chm/cmdline/switches/index.htm
// Effective Golang - http://golang.org/doc/effective_go.html
package main

import (
    "fmt"
    "os"
    "os/exec"
    "path/filepath"
    "strings"
)

// ...

func main() {
    // ...
    extractZipWithPassword()
    // ...
}</code>
go run main.go

執行程式: 編譯並執行範例程式:程式會將受密碼保護的ZIP檔案解壓縮到指定目錄。

以上是如何在 Go 1.2 中解壓縮受密碼保護的 ZIP 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn