java—Base64
Base64实在工作开发中常用的一种编码方式。通常用于存储以及传输二进制文件,主要作为电子邮件的标准)。
Base64就是选出64个字符作为一个基本的字符集。
大写:A-Z
小写:a-z
数字:0-9
其他:+ /
Base64的编码规则:将三个 字节(byte)作为一组,一个字节有八个 比特(bit),那么三个字节就有24个二进制位(24个比特)。然后在将这24个二进制分为四组,每个组有6个二进制位(b个比特)。在将每组的前面加上两个0,扩展成32个二进制位,即分为4个字节。
比特(bit): 比特(bit):是计算机最小的单元,它的值是0和1组成。我们计算机上存储的,网络上发送的数据包,本质上就是0和1的组合。在Java中,一个(byte)类型的数据等于8个比特(bit),
Base64的解码规则:将每4个字符为一组,然后在这每组的4个字符中,找出每个字符对应的ASCII编码。在将每组中的每个字符的ASCII编码转换成二进制数据,再去掉每个字符所属的二进制数据前两个0。那么还剩24位二进制数据,分为3组,每八位二进制为一组。那么就有三组,即三个字节。
ASCII:在网络传输数据的时候,都是使用ASCII的编码方式进行数据传输,但是对于音频或者是视频这些数据,对于ASCII编码而言属于不可见的数据,就会造成数据丢失问题。所以使用Base64进行编码传输。
JAVA操作Base64:
使用sum.misc.BASE64Encoder进行编码操作
package cn.mldn.base64; import java.io.UnsupportedEncodingException; import sun.misc.BASE64Encoder; public class SumMisc { public static String encodeBySunMisc(String str){ try { return new BASE64Encoder().encode(str.getBytes("UTF-8")) ; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return "" ; } public static void main(String[] args) { System.out.println(SumMisc.encodeBySunMisc("helloworld")) ; } }
使用sum.misc.BASE64Decoder进行解码操作
package cn.mldn.base64; import java.io.IOException; import sun.misc.BASE64Decoder; public class SumMisc2 { public static String decodeBySunMisc(String str){ try { byte result[] = new BASE64Decoder().decodeBuffer(str) ; return new String(result) ; } catch (IOException e) { e.printStackTrace(); return "" ; } } public static void main(String[] args) { System.out.println(SumMisc2.decodeBySunMisc("aGVsbG93b3JsZA==")) ; } }
使用org.apache.commons.codec.binary.Base64进行编码
package cn.mldn.base64; import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Base64; public class OpacheBase64 { public static String strToBase64(String str){ byte bytes[]; try { bytes = Base64.encodeBase64(str.getBytes("UTF-8")) ; return new String(bytes) ; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return "" ; } public static void main(String[] args) { System.out.println(OpacheBase64.strToBase64("helloworld")) ; } }
使用org.apache.commons.codec.binary.Base64进行解码
package cn.mldn.base64; import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Base64; public class OpacheBase642 { public static String base64ToStr(String str){ try { byte bytes[] = Base64.decodeBase64(str.getBytes("UTF-8")) ; return new String(bytes) ; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return "" ; } public static void main(String[] args) { System.out.println(OpacheBase642.base64ToStr("aGVsbG93b3JsZA==")) ; } }
使用java.util.Base64进行编码
package cn.mldn.base64; import java.io.UnsupportedEncodingException; import java.util.Base64; public class UtilBase64 { public static String strToBase64(String str){ try { byte bytes [] = Base64.getEncoder().encode(str.getBytes("UTF-8")) ; return new String(bytes) ; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return "" ; } public static void main(String[] args) { System.out.println(UtilBase64.strToBase64("helloworld")) ; } }
使用ava.util.Base64进行解码操作
package cn.mldn.base64; import java.io.UnsupportedEncodingException; import java.util.Base64; public class UtilBase642 { public static String base64ToStr(String str){ try { byte bytes [] = Base64.getDecoder().decode(str.getBytes("UTF-8")) ; return new String(bytes) ; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return "" ; } public static void main(String[] args) { System.out.println(UtilBase642.base64ToStr("aGVsbG93b3JsZA==")) ; } }
原文 https://www.cnblogs.com/tjava/p/10410705.html