qq_37751990
SimpleSmile_5177
采纳率62.5%
2018-10-09 10:45

java中使用Base64的加密方法将byte[]加密成一个字符串的问题?

已采纳

图片说明

这上面那个就是将byte[]加密的方法。
 public static void main(String[] args) throws IOException {
        File file = new File("C:\\Users\\libai\\Desktop\\s.pdf");
        FileInputStream fis = new FileInputStream(file);
        ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
        byte[] b = new byte[1000];
        int n;
        byte[] buffer;
        while ((n = fis.read(b)) != -1) {
            bos.write(b, 0, n);
        }
        fis.close();
        bos.close();
        buffer = bos.toByteArray();

        File file1 = new File("C:\\Users\\libai\\Desktop\\x.pdf");
        FileInputStream fis1 = new FileInputStream(file1);
        ByteArrayOutputStream bos1 = new ByteArrayOutputStream(1000);
        byte[] b1 = new byte[1000];
        int n1;
        byte[] buffer1;
        while ((n1 = fis1.read(b1)) != -1) {
            bos1.write(b1, 0, n1);
        }
        fis1.close();
        bos1.close();
        buffer1 = bos1.toByteArray();
        String base64Encryption = Base64Encryption(buffer);
        System.out.println("第一条"+base64Encryption);
        String base64Encryption1 = Base64Encryption(buffer1);
        System.out.println("第二条"+base64Encryption1);
    }

这是测试代码
运行的瞬间,打印出的是这样,
图片说明

过了一秒多的时间,控制台变成这样了,
图片说明

不清楚是怎么回事?我是想加密多个文件,但是这样只是有最后一条的加密信息。求大神指点。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • weixin_37893887 玄尺 3年前

    这是控制台的问题,控制台的buffer有上限,有可能是第一行太长了,控制台只保存了最后一行。
    by the way,base64使用场景主要用于编码(将字符串去掉一些特殊符号),前端一般用于小图片的编码,以及字节数组字符串可读,没有加密功能。

    点赞 评论 复制链接分享
  • qq_37751990 SimpleSmile_5177 3年前

    谢谢,找到问题了,是我这代码写的有问题。

    点赞 评论 复制链接分享