Java Base64文件加密方法

jdk 1.7 使用方法如下:

import java.io.FileInputStream;

 

import java.io.IOException;

 

import java.io.InputStream;

 

import sun.misc.BASE64Encoder;

 

 

public class Base64 {

 

    public static String getFile(String File) {

 

        InputStream inputStream = null;

 

        byte[] data = null;

 

        try {

 

            inputStream = new FileInputStream(File);

 

            data = new byte[inputStream.available()];

 

            inputStream.read(data);

 

            inputStream.close();

 

        }

 

        catch (IOException e) {

 

            e.printStackTrace();

 

        }

 

        BASE64Encoder encoder = new BASE64Encoder();

 

        return encoder.encode(data);

 

    }

 

    public static void main (String[] args) {

 

        String strImg = getFile("/Users/xxxx");

 

        System.out.println(strImg);

 

        System.out.println("\n end");

 

    }

 

}

 


jdk 1.8 使用方法如下:

package file;

 

import java.io.FileInputStream;

 

import java.io.IOException;

 

import java.io.InputStream;

 

import java.util.Base64;

 

 

public class Base64 {

 

    public static String getFile(String File) {

 

        InputStream inputStream = null;

 

        byte[] data = null;

 

        try {

 

            inputStream = new FileInputStream(File);

 

            data = new byte[inputStream.available()];

 

            inputStream.read(data);

 

            inputStream.close();

 

        }

 

        catch (IOException e) {

 

            e.printStackTrace();

 

        }

 

        String encoder = Base64.getEncoder().encodeToString(data);

 

        return encoder;

 

    }

 

    public static void main (String[] args) {

 

        String strImg = getFile("/Users/xxxx");

 

        System.out.println(strImg);

 

        System.out.println("\n end");

 

    }

 

}

1.7的jar包加密後產生的內容會帶有換行

例:輸入內容如下

H4sIANwuLF0CA+2WXWvbMBSGc71fUXy9mHOko4/oqrBBLwfbGGM3RZbkJpDEwXI2Rul/n5SGrSyl

DcxePsh7Y0vvsSU/kl7ctXYZ69De2vn81jXLZXDdrFnGct7cjXoSJEmizTXprysCZ2qEXCAHRkqk

OhQ8lV/B6D9oHTvbXl2N2qbpXqp7zT9R3Rfeff65CoUpcLsexdtiEe8Kc1+sXeOz8+0r6rQ+Orvv

gL8nCamhRKr8HtqY9ksq+sJKKFmJsvzIkzH9sX04N9Jm6h4HsetumjpmtXWbZjfFPGAX8wSE5KgI

kGmSqdPFmU/dDrRAQsct1xKAeUJBXikHDEBN8iwW1uWXkRFgSJoQjJVGU3LaGGfJGvNcVtt5DM7Z

3IGQ7Spux5CGMSO94WQ0GJW9rXV9/emGjT+swvI2f/NiLG6Kh4c3u+DYsOBibPYAJ+D0wIlBwfmp

W7WvkhPIcAhyfXKSg3Nyp8YpTXeVpzfJn6dLpkuhn4d36FgTXHDFxB92nNFEk6cgiIHWpMEyrLQK

3lZgpfrNDrXRaCAY701dmVo+Zad2Tqc4s1h7BKf6BqcHB3fwWEvklNisX+9b7qxi7ZETPyJOu7Gm

5PPwaFh4YZ/zqRCl7Jte36fx8PmvJOon+V+TcExzVlWVSOEDGoSu002tMXiqaC9MxM7+t3YDboKn

B+4I8l9JxmAIcmeW/5kTHhGnk8p/AqIJ75kel/+0y0YXXXTRRRe9rF+fsLZ4ABgAAA==

1.8的jar包加密後產生的內容不會帶有換行

例:輸出內容如下:

H4sIANwuLF0CA+2WXWvbMBSGc71fUXy9mHOko4/oqrBBLwfbGGM3RZbkJpDEwXI2Rul/n5SGrSylDcxePsh7Y0vvsSU/kl7ctXYZ69De2vn81jXLZXDdrFnGct7cjXoSJEmizTXprysCZ2qEXCAHRkqkOhQ8lV/B6D9oHTvbXl2N2qbpXqp7zT9R3Rfeff65CoUpcLsexdtiEe8Kc1+sXeOz8+0r6rQ+OrvvgL8nCamhRKr8HtqY9ksq+sJKKFmJsvzIkzH9sX04N9Jm6h4HsetumjpmtXWbZjfFPGAX8wSE5KgIkGmSqdPFmU/dDrRAQsct1xKAeUJBXikHDEBN8iwW1uWXkRFgSJoQjJVGU3LaGGfJGvNcVtt5DM7Z3IGQ7Spux5CGMSO94WQ0GJW9rXV9/emGjT+swvI2f/NiLG6Kh4c3u+DYsOBibPYAJ+D0wIlBwfmpW7WvkhPIcAhyfXKSg3Nyp8YpTXeVpzfJn6dLpkuhn4d36FgTXHDFxB92nNFEk6cgiIHWpMEyrLQK3lZgpfrNDrXRaCAY701dmVo+Zad2Tqc4s1h7BKf6BqcHB3fwWEvklNisX+9b7qxi7ZETPyJOu7Gm5PPwaFh4YZ/zqRCl7Jte36fx8PmvJOon+V+TcExzVlWVSOEDGoSu002tMXiqaC9MxM7+t3YDboKnB+4I8l9JxmAIcmeW/5kTHhGnk8p/AqIJ75kel/+0y0YXXXTRRRe9rF+fsLZ4ABgAAA==

如果需要解密,解密也需要相對應的jar包。不然就會出現報錯

java.lang.IllegalArgumentException: Illegal base64 character d

     at java.util.Base64$Decoder.decode0(Unknown Source)

因爲1.7 引入的加密方法規定一行超過76個字符就會自動換行

而1.8 引入的加密方法去掉了這個規則

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章