java Base64编码

base64编码加解密有以下几种:

方法一:sun.misc包中的加解密方法(不推荐用这种方法)

import java.io.IOException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class Base64Util {

  public static String encrypt(byte[] data) {
    return new BASE64Encoder().encode(data);
  }

  public static String decrypt(String data) throws IOException {
    return new String(new BASE64Decoder().decodeBuffer(data));
  }

  public static void main(String[] args) throws IOException {
    String data = "1234567890";

    String result = Base64Util.encrypt(data.getBytes());
    System.out.println(data +" 使用Base64编码的结果: "+result);

    String result2 = Base64Util.decrypt(result);
    System.out.println(result + "使用Base64解码的结果:" +result2);

  }
}

方法二、使用commons-codec.jar

    /*解密*/
    public static byte[] decode(final byte[] bytes) {  
        return Base64.decodeBase64(bytes);  
    }
    public static byte[] decode(String param) { 
        byte[] bytes=param.getBytes();
        return Base64.decodeBase64(bytes);  
    }   
    /*加密*/
    //参数为byte数组
    public static String encode(final byte[] bytes) {  
        return BytesToHex.fromBytesToHex(Base64.encodeBase64(bytes));  
    }
    //参数为字符串
    public static String encode(String param) {  
        byte[] bytes=param.getBytes();
        return BytesToHex.fromBytesToHex(Base64.encodeBase64(bytes));  
    }

方法三、反射

/*** 
     * encode by Base64 
     */  
    public static String encodeBase64(byte[]input) throws Exception{  
        Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");  
        Method mainMethod= clazz.getMethod("encode", byte[].class);  
        mainMethod.setAccessible(true);  
         Object retObj=mainMethod.invoke(null, new Object[]{input});  
         return (String)retObj;  
    }  
    /*** 
     * decode by Base64 
     */  
    public static byte[] decodeBase64(String input) throws Exception{  
        Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");  
        Method mainMethod= clazz.getMethod("decode", String.class);  
        mainMethod.setAccessible(true);  
         Object retObj=mainMethod.invoke(null, input);  
         return (byte[])retObj;  
    }

使用BC方式进行加密


    public static String bouncyCastleEncodeBase64() {
        byte[] encodeByte = org.bouncycastle.util.encoders.Base64.encode(str.getBytes());
        return new String(encodeByte);
    }
    public static String bouncyCastleEncodeBase64(String encodeString) {
        byte[] decodeByte = org.bouncycastle.util.encoders.Base64.decode(encodeString.getBytes());
        return new String(decodeByte); 
    }

下面是byte数组转换为String,你也可以直接使用new String()进行直接转换。

public class BytesToHex {

    public static String fromBytesToHex(byte[] resultBytes) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < resultBytes.length; i++) {
            if (Integer.toHexString(0xFF & resultBytes[i]).length() == 1) {
                builder.append("0").append(
                        Integer.toHexString(0xFF & resultBytes[i]));
            } else {
                builder.append(Integer.toHexString(0xFF & resultBytes[i]));
            }
        }
        return builder.toString();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值