用Go对csv文件进行加密和打包。

1,045 阅读1分钟

好的文章虽然会迟到,但是永不会缺席!

func main() {
	pack()
	//fmt.Println(len(RandomSeed))


}

// TODO: 如何进行加密的呢?

// 对文件进行打包.
func pack() {

	// 直接在当前文件根路径打包.
	out, err := os.Create("test.zip")
	if nil != err {
		log.Println(err.Error())
		return
	}
        
        // 通过File构造ZIP的Writer.
        writer := zip.NewWriter(out)
	// Encrypt返回的是一个IO流,该IO流表示的是ZIP里面已经加密了的文件的IO流. 
        // 换句话就是通过该该IO流来操作已经加密了的文件的。
	w, err := writer.Encrypt("2021.csv", "123", zip.AES256Encryption)

	if nil != err {
		log.Fatal(err.Error())
	}
	// w是加密被加密的文件.
	CreateCsvFile(w)
	// 刷新到ZIP中.
	writer.Flush()
	if err := writer.Close(); err != nil {
		log.Println(err.Error())
	}
}

func CreateCsvFile(w io.Writer) {

	// 写入的是UTF-8 BOM.
	// file, _ := os.Create("test.csv")
	// file.WriteString("\xEF\xBB\xBF")
	writer := csv.NewWriter(w)
	data := [][]string{
		{"CDKNumber", "CDK"},
		{"2", "ASFAFADFAF"},
		{"3", "AFADFADFAF"},
		{"4", "AFDAADAWED"},
	}
	writer.WriteAll(data)
	writer.Flush()

}

OK,因为文件是在项目根目录中写的,运行main方法可以看到在根目录生成了一个ZIP文件,里面是加密了的CSV文件。