java jdk1.8前base解码方式

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值