# zip **Repository Path**: butnet/zip ## Basic Information - **Project Name**: zip - **Description**: 修复兼容问题: Read: checksum error - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-01 - **Last Updated**: 2023-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README This fork add support for Standard Zip Encryption. The work is based on https://github.com/alexmullins/zip Available encryption: ``` zip.StandardEncryption zip.AES128Encryption zip.AES192Encryption zip.AES256Encryption ``` ## Warning Zip Standard Encryption isn't actually secure. Unless you have to work with it, please use AES encryption instead. ## Example Encrypt Zip ``` package main import ( "bytes" "io" "log" "os" "github.com/yeka/zip" ) func main() { contents := []byte("Hello World") fzip, err := os.Create(`./test.zip`) if err != nil { log.Fatalln(err) } zipw := zip.NewWriter(fzip) defer zipw.Close() w, err := zipw.Encrypt(`test.txt`, `golang`, zip.AES256Encryption) if err != nil { log.Fatal(err) } _, err = io.Copy(w, bytes.NewReader(contents)) if err != nil { log.Fatal(err) } zipw.Flush() } ``` ## 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)) } } ```