为了账号安全,请及时绑定邮箱和手机立即绑定

将Java解密代码迁移到Golang

将Java解密代码迁移到Golang

Go
郎朗坤 2021-05-07 10:05:30
在过去的几天里,我一直在努力将Java代码迁移到Golang,现在我陷入了困境。这是有效的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中的实现: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个字节是相同的,从第17个字节开始,所有字节由于某种原因而有所不同
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 289 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信