java base64工具类_java中Base64的加密工具封装

这是一个Java实现的Base64编码和解码工具类,包含encode和decode方法,可用于字符串的加密和解密操作。示例代码展示了如何使用这个工具类对字符串进行Base64编码和解码。
摘要由CSDN通过智能技术生成

packagecom.demo.utils;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.OutputStream;importjava.io.UnsupportedEncodingException;/*** Created by Administrator on 2017/10/25.*/

public classBase64 {private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();public static String encode(byte[] data) {int start = 0;int len =data.length;

StringBuffer buf= new StringBuffer(data.length * 3 / 2);int end = len - 3;int i =start;int n = 0;while (i <=end) {int d = ((((int) data[i]) & 0x0ff) << 16) | ((((int) data[i + 1]) & 0x0ff) << 8) | (((int) data[i + 2]) & 0x0ff);

buf.append(legalChars[(d>> 18) & 63]);

buf.append(legalChars[(d>> 12) & 63]);

buf.append(legalChars[(d>> 6) & 63]);

buf.append(legalChars[d& 63]);

i+= 3;if (n++ >= 14) {

n= 0;

buf.append(" ");

}

}if (i == start + len - 2) {int d = ((((int) data[i]) & 0x0ff) << 16) | ((((int) data[i + 1]) & 255) << 8);

buf.append(legalChars[(d>> 18) & 63]);

buf.append(legalChars[(d>> 12) & 63]);

buf.append(legalChars[(d>> 6) & 63]);

buf.append("=");

}else if (i == start + len - 1) {int d = (((int) data[i]) & 0x0ff) << 16;

buf.append(legalChars[(d>> 18) & 63]);

buf.append(legalChars[(d>> 12) & 63]);

buf.append("==");

}returnbuf.toString();

}private static int decode(charc) {if (c >= 'A' && c <= 'Z')return ((int) c) - 65;else if (c >= 'a' && c <= 'z')return ((int) c) - 97 + 26;else if (c >= '0' && c <= '9')return ((int) c) - 48 + 26 + 26;else

switch(c) {case '+':return 62;case '/':return 63;case '=':return 0;default:throw new RuntimeException("unexpected code: " +c);

}

}/*** Decodes the given Base64 encoded String to a new byte array. The byte array holding the decoded data is returned.*/

public static byte[] decode(String s) {

ByteArrayOutputStream bos= newByteArrayOutputStream();try{

decode(s, bos);

}catch(IOException e) {throw newRuntimeException();

}byte[] decodedBytes =bos.toByteArray();try{

bos.close();

bos= null;

}catch(IOException ex) {

System.err.println("Error while decoding BASE64: " +ex.toString());

}returndecodedBytes;

}private static void decode(String s, OutputStream os) throwsIOException {int i = 0;int len =s.length();while (true) {while (i < len && s.charAt(i) <= ' ')

i++;if (i ==len)break;int tri = (decode(s.charAt(i)) << 18) + (decode(s.charAt(i + 1)) << 12) + (decode(s.charAt(i + 2)) << 6) + (decode(s.charAt(i + 3)));

os.write((tri>> 16) & 255);if (s.charAt(i + 2) == '=')break;

os.write((tri>> 8) & 255);if (s.charAt(i + 3) == '=')break;

os.write(tri& 255);

i+= 4;

}

}public static void main(String[] args) throwsUnsupportedEncodingException {

String content= "程序默认没有bug";

System.out.println("加密之前:" +content);//加密

String jiami = Base64.encode(content.getBytes("utf-8"));

System.out.println("加密后的内容:" +jiami);//解密

String jiemi = newString(Base64.decode(jiami));

System.out.println("解密后的内容:" +jiemi);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值