golang读取加密的zip文件

ioutil.ReadFile(absPath)这个如果文件是一个加密过的zip文件,就没法读取出完整的数据,因为我想把数据上传到oss上面

如果zip文件没有加密,直接用ioutil.readfile就能读取文件,但是对于加密过的来说,不能读取zip里面的内容
上传到oss上的文件就是下面这样的
clipboard.png

clipboard.png

请问这种情况如何让处理,我使用的是alexmullins/zip这个开源的代码库压缩的代码

阅读 4.8k
1 个回答

项目介绍里不就说了使用方法了。。还有Example Encrypt zip

在项目issue里有讨论关于decrypt的,里面还人fork了一个分支https://github.com/yeka/zip

Example Decrypt Zip
package main

import (
    "fmt"
    "io/ioutil"
    "log"

    "github.com/yeka/zip"
)

func main() {
    r, err := zip.OpenReader("encrypted.zip")
    if err != nil {
        log.Fatal(err)
    }
    defer r.Close()

    for _, f := range r.File {
        if f.IsEncrypted() {
            f.SetPassword("12345")
        }

        r, err := f.Open()
        if err != nil {
            log.Fatal(err)
        }

        buf, err := ioutil.ReadAll(r)
        if err != nil {
            log.Fatal(err)
        }
        defer r.Close()

        fmt.Printf("Size of %v: %v byte(s)\n", f.Name, len(buf))
    }
}

同样,原项目里也有SetPassword的方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏