使用Scala进行Gzip压缩导致归档错误

时间:2016-07-13 15:53:50

标签: scala encryption compression gzip

我正在对文档进行更改,然后我需要使用gzip压缩文档,对其进行加密然后保存。

每个单独的代码块都按预期通过单元测试但是它们一起失败,当我打开文件时,我收到一条错误,说它不是存档。

下面的基本代码,非常感谢任何帮助,谢谢你提前!

val zipped = compressFile1(replaced)

def compressFile1(fileContents: String): Array[Byte] = {
  val bos = new ByteArrayOutputStream()
  val gzs = new GZIPOutputStream(bos)
  gzs.write(fileContents.getBytes("UTF-8"))
  gzs.close()
  val compressed = bos.toByteArray
  bos.close()
  compressed
}

然后我加密文件

val encrypted = encrypt(zipped.toString)

def encrypt(value: String): String = {
  val cipher: Cipher = Cipher.getInstance("AES/ECB/PKCS5Padding")
  cipher.init(Cipher.ENCRYPT_MODE, keyToSpec(encryptionPassword))
  Base64.encodeBase64String(cipher.doFinal(value.getBytes("UTF-8")))
}

然后保存

val file = writeStringToFile(new File("testfile1.gz"), encrypted)

再次感谢你

1 个答案:

答案 0 :(得分:1)

.toString上调用Array[Byte]实际上会返回类似[B@4d2f7117(标准toString实现)的内容。它没有做你期望的那样......

val encrypted = encrypt(new String(zipped))

而不是

val encrypted = encrypt(zipped.toString)