在過去的幾天里,我一直在努力將Java代碼遷移到Golang,現(xiàn)在我陷入了困境。這是有效的Java代碼:final Key k = new SecretKeySpec(keyString.getBytes(), "AES");Cipher c = Cipher.getInstance("AES");c.init(Cipher.DECRYPT_MODE, k);final InputStream in = new BufferedInputStream(new FileInputStream(fileNameToDecrypt));final CipherInputStream instream = new CipherInputStream(in, c);if (instream.read() != 'B') { System.out.println("Error");}if (instream.read() != 'Z') { System.out.println("Error");}final CBZip2InputStream zip = new CBZip2InputStream(instream);我在Golang中的實現(xiàn):c, _ := aes.NewCipher([]byte(keyString))// IV must be defined in golangiv := []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}d := cipher.NewCBCDecrypter(c, iv)fi, _ := os.Open(fileNameToDecrypt)stat, _ := fi.Stat()enc := make([]byte, stat.Size())dec := make([]byte, stat.Size())fi.Read(enc)d.CryptBlocks(dec, enc)instream := bytes.NewBuffer(dec)zip := bzip2.NewReader(instream)到目前為止我所知道的:這段代碼中所有被忽略的錯誤值_都nil在這段代碼中必須為省略bzip2標頭(“ BZ”)CBzip2InputStream,但不能為bzip2.NewReader從instreamJava和golang中讀取的前16個字節(jié)是相同的,從第17個字節(jié)開始,所有字節(jié)由于某種原因而有所不同
- 2 回答
- 0 關注
- 312 瀏覽
添加回答
舉報
0/150
提交
取消