package main import ( "flag" "fmt" "goED/util" "io/ioutil" "os" ) func readFileToStr(path string) string { content, err := ioutil.ReadFile(path) if err != nil { fmt.Println("read file failed, err:", err) return "" } return string(content) } func genFile(str, path string) { file, err := os.OpenFile(path, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) if err != nil { fmt.Println("open file failed, err:", err) return } defer file.Close() file.Write([]byte(str)) //写入字节切片数据 //file.WriteString("hello go") //直接写入字符串数据 } func test() { //content, err := ioutil.ReadFile("C:\\Users\\61778\\Desktop\\HelloWorld.class") strContent := readFileToStr("C:\\METSIM\\example\\gascleaning_1.5_30.sfw") //fmt.Println(strContent) Encrypt, _ := util.AesEcpt.AesBase64Encrypt(strContent) //fmt.Printf("Encrypt: %v\n", Encrypt) Decrypt, _ := util.AesEcpt.AesBase64Decrypt(Encrypt) //fmt.Printf("Decrypt: %v\n", Decrypt) fmt.Printf("明文长度: %v\n解密后长度: %v\n", len(strContent), len(Decrypt)) } func testGenFile(path, enPath, dePath string) { strContent := readFileToStr(path) Encrypt, _ := util.AesEcpt.AesBase64Encrypt(strContent) genFile(Encrypt, enPath) //fmt.Printf("Encrypt: %v\n", Encrypt) Decrypt, _ := util.AesEcpt.AesBase64Decrypt(Encrypt) genFile(Decrypt, dePath) //fmt.Printf("Decrypt: %v\n", Decrypt) fmt.Printf("明文长度: %v\n解密后长度: %v\n", len(strContent), len(Decrypt)) } func enFile(path string) { enFileToOutPath(path, path) } func enFileToOutPath(path, outPath string) { strContent := readFileToStr(path) Encrypt, _ := util.AesEcpt.AesBase64Encrypt(strContent) genFile(Encrypt, outPath) } func deFile(path string) { deFileToOutPath(path, path) } func deFileToOutPath(path string, outPath string) { strContent := readFileToStr(path) Decrypt, _ := util.AesEcpt.AesBase64Decrypt(strContent) genFile(Decrypt, outPath) } var mode = flag.String("mode", "de", "加密或者解密 en de") var path = flag.String("path", "", "文件路径") var outPath = flag.String("outPath", "", "指定输出文件路径") var key = flag.String("key", "", "加密秘钥-限制大小写字母数字16位 可以不指定") func main() { flag.Parse() //fmt.Println(*mode) //fmt.Println(*path) var out string = *path var modeName string if len(*outPath) != 0 { out = *outPath } if len(*key) == 16 { util.InitBykey(*key) } else if (len(*key) > 0) && (len(*key) < 16) { fmt.Printf("秘钥限制大小写字母数字16位") } if len(*path) == 0 { fmt.Printf("path 不能为空") } else if *mode != "en" && *mode != "de" { fmt.Printf("mode 只能是 en 或者 de") } else if *mode == "en" { modeName = "加密" enFileToOutPath(*path, out) } else if *mode == "de" { modeName = "解密" deFileToOutPath(*path, out) } fmt.Println(modeName + "成功,被" + modeName + "文件是在: " + *path + " " + modeName + "后文件生产在:" + out) //test() // testGenFile("C:\\METSIM\\example\\gascleaning_1.5_30.sfw", // "C:\\Users\\61778\\Desktop\\testGoED\\gascleaning_1.5_30.sfw.EN", // "C:\\Users\\61778\\Desktop\\testGoED\\gascleaning_1.5_30.sfw") // enFile("C:\\Users\\61778\\Desktop\\HelloWorld.class") // deFile("C:\\Users\\61778\\Desktop\\HelloWorld.class") // cmd := exec.Command("cmd", "/C", "C:\\METSIM\\METSIM.exe", // "MOD=C:\\Users\\61778\\Desktop\\testGoED\\gascleaning_1.5_30.sfw", "SIL=1") // var stdout, stderr bytes.Buffer // cmd.Stdout = &stdout // cmd.Stderr = &stderr // err := cmd.Run() // outStr, errStr := string(stdout.Bytes()), string(stderr.Bytes()) // fmt.Printf("out:\n%s\nerr:\n%s\n", outStr, errStr) // if err != nil { // log.Fatalf("cmd.Run() failed with %s\n", err) // } // cmd := exec.Command("cmd", "/C", "C:\\METSIM\\METSIM.exe", // "MOD=C:\\Users\\61778\\Desktop\\testGoED\\gascleaning_1.5_30.sfw", "SIL=1") // cmd.Start() }