zip icon indicating copy to clipboard operation
zip copied to clipboard

[Q] Can I perform encryption without File Writer?

Open sg-acloset opened this issue 2 years ago • 0 comments

First of all, thank you for creating such a wonderful library.

If I run it as written in the README, it works fine. However, if I try with a local buffer as follows, it doesn't seem to work the same way.

package main

import (
	"bytes"
	"io"
	"log"
	"os"

	"github.com/alexmullins/zip"
)

func MakeZipWithPassword(contents []byte, password string, originalFilename string) []byte {
	bytesContents := []byte(contents)

	var buffer bytes.Buffer

	// writer, err := os.Create(`./test.zip`)
	// if err != nil {
	// 	log.Fatalln(err)
	// }

	zipWriter := zip.NewWriter(&buffer)
	defer zipWriter.Close()

	encryptedWriter, err := zipWriter.Encrypt(originalFilename, password)
	if err != nil {
		log.Fatal(err)
	}

	_, err = io.Copy(encryptedWriter, bytes.NewReader(bytesContents))
	if err != nil {
		log.Fatal(err)
	}
	if err := zipWriter.Flush(); err != nil {
		log.Fatal(err)
	}

	return buffer.Bytes()
}

func main() {
	contents := "Hello World!"
	password := "password"
	originalFilename := "asdf.txt"

	zipFile := MakeZipWithPassword([]byte(contents), password, originalFilename)

	os.WriteFile("asdf.zip", []byte(zipFile), 0644)

}

Maybe I used something wrong?

sg-acloset avatar Sep 21 '23 05:09 sg-acloset