在日常开发中,我们经常需要处理压缩文件。Go语言标准库中的 archive/zip 包提供了对 ZIP 文件的基本读写支持,但它不支持密码加密或解密功能。如果你需要在 Go 中处理带密码的 ZIP 文件,就必须借助第三方库。
本文将手把手教你如何使用 Go 语言配合第三方库来创建和解压带密码保护的 ZIP 文件,即使是编程新手也能轻松上手!
Go 的 archive/zip 包遵循的是 ZIP 标准规范,但 ZIP 的密码加密机制(如传统的 ZipCrypto 或更安全的 AES)属于扩展功能,并未包含在基础实现中。因此,开发者需引入社区维护的第三方包。
目前最常用且兼容性较好的库是 yeka/zip,它基于标准库扩展,支持 ZipCrypto 加密(注意:ZipCrypto 安全性较低,仅适用于轻度保护)。
在终端执行以下命令安装所需库:
go get github.com/yeka/zipgo get github.com/klauspost/compress/flate 下面代码演示如何将一个文本文件压缩并设置密码:
package mainimport ( "bytes" "fmt" "os" "github.com/yeka/zip" "github.com/klauspost/compress/flate")func main() { // 创建输出 ZIP 文件 zipFile, err := os.Create("protected.zip") if err != nil { panic(err) } defer zipFile.Close() // 创建 zip.Writer 并设置密码 writer := zip.NewWriter(zipFile) defer writer.Close() // 设置压缩级别(可选) writer.RegisterCompressor(zip.Deflate, func(out io.Writer) (io.WriteCloser, error) { return flate.NewWriter(out, flate.DefaultCompression) }) // 添加文件到 ZIP file, err := writer.CreateHeader(&zip.FileHeader{ Name: "secret.txt", Method: zip.Deflate, }) if err != nil { panic(err) } // 设置密码(关键步骤) if pw := "mypassword123"; pw != "" { file.SetPassword(pw) } // 写入文件内容 content := "This is a secret message!" _, err = file.Write([]byte(content)) if err != nil { panic(err) } fmt.Println("✅ 带密码的 ZIP 文件已生成:protected.zip")} 现在我们尝试读取刚才创建的 protected.zip 文件:
package mainimport ( "fmt" "io" "os" "github.com/yeka/zip")func main() { // 打开 ZIP 文件 reader, err := zip.OpenReader("protected.zip") if err != nil { panic(err) } defer reader.Close() // 遍历 ZIP 中的每个文件 for _, file := range reader.File { fmt.Printf("正在解压文件: %s\n", file.Name) // 设置密码(必须与压缩时一致) file.SetPassword("mypassword123") // 打开文件内容 rc, err := file.Open() if err != nil { panic(err) } defer rc.Close() // 读取内容 content, err := io.ReadAll(rc) if err != nil { panic(err) } fmt.Printf("内容: %s\n\n", string(content)) }} github.com/bodgit/sevenzip 但非 ZIP 格式)。通过本教程,你已经掌握了如何在 Go 语言中使用第三方库 yeka/zip 来实现 ZIP 文件的密码保护功能。虽然标准库 archive/zip 功能强大,但在处理加密场景时仍需依赖社区工具。
记住关键词:Go语言 zip密码保护、Go archive/zip 加密、Go第三方zip库、Go zip文件解压密码——这些是你后续搜索相关问题的核心术语。
希望这篇教程对你有帮助!如有疑问,欢迎在评论区交流 👇
本文由主机测评网于2025-12-16发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128451.html