首页 > 后端开发 > Golang > 如何在 Go 1.2 中解压受密码保护的 ZIP 文件?

如何在 Go 1.2 中解压受密码保护的 ZIP 文件?

Mary-Kate Olsen
发布: 2024-10-30 09:09:03
原创
609 人浏览过

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

在 Go 1.2 中解压受密码保护的 ZIP 文件

Go 1.2 中的 archive/zip 包提供了处理 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>
登录后复制
  1. 运行程序: 编译并运行示例程序:
go run main.go
登录后复制

程序会将受密码保护的ZIP文件解压到指定目录。

以上是如何在 Go 1.2 中解压受密码保护的 ZIP 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板