首页 > 解决方案 > Encryt --> base64 Encode-->加密文件-->base64decode-->解密--->解密文件后得到相同的输入文件格式

问题描述

我正在通过以下方式将文本文件转换为 enc 文件:

  1. 通读文件输入流。
  2. 加密
  3. 使用 base 64 编码。
  4. 使用文件输出流写入 .enc 文件。
  5. 通过文件输入流读取 .enc 文件
  6. 使用 base 64 解码。
  7. 解密
  8. 使用文件输出流写入文本文件。

我无法获得与输入文件相同的输出格式。输出是一样的。

//Encrypt
inFile = new FileInputStream(path + "/" + fileName);
outFile = new FileOutputStream(encfileName);
byte[] input = new byte[64];
            int bytesRead;
            while ((bytesRead = inFile.read(input)) != -1) {
                byte[] output = cipher.update(input, 0, bytesRead);
                if (output != null)

                    outFile.write(Base64.getEncoder().encode(output));
            }

            byte[] output = cipher.doFinal();
            if (output != null)
                outFile.write(Base64.getEncoder().encode(output));

//Decrypt
fis = new FileInputStream(path + "/" + encryptedFile);
            fos = new FileOutputStream(decryptedFile);
            byte[] in = new byte[64];
            int read;
            while ((read = decoder.wrap(fis).read(in)) != -1) {
                byte[] output = cipher.update(in, 0, read);
                if (output != null)
                    fos.write(output);
            }

            byte[] output = cipher.doFinal();
            if (output != null)
                fos.write(output);



有什么建议么?

标签: javaencryptionformatbase64

解决方案


也使用包装编码器。实际上,您正在将填充字符和部分包含位的 base64 字符插入到加密数据中。


推荐阅读