概述
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息。详细的Base64信息,可以参见维基百科:https://en.wikipedia.org/wiki/Base64。今天,我们开始java中base64算法的使用。
结构导航
Java自带的Base64算法
项目结构如下
一、 引入jdk自带的rt.jar包
要使用Base64Encoder,却发现在Eclipse中无法找到该类,原来Base64Encoder并不属于JDK标准库范畴,但是又包含在了JDK中。
问题的解决方案: Project->Properties,选择Java Build Path设置项,再选择Libraries标签,Add External Jars添加%JAVA_HOME%jrelibrt.jar就行。
二、 我们通过junit方法,来加以对Base64算法的测试,明文:my name is huhx。
private static String src = "my name is huhx";
@Testpublic voidhuhxBase64() {try{
BASE64Encoder encoder= newBASE64Encoder();
String encode=encoder.encode(src.getBytes());
System.out.println("encode: " +encode);
BASE64Decoder decoder= newBASE64Decoder();
String decode= newString(decoder.decodeBuffer(encode));
System.out.println("decode: " +decode);
}catch(IOException e) {
e.printStackTrace();
}
}
三、 运行结果如下:
encode: bXkgbmFtZSBpcyBodWh4
decode: my nameis huhx
commons-codec的Base64算法
一、 引入commons-codec-1.10.jar包,提供对base64算法的支持
二、 我们通过junit方法,来加以对Base64算法的测试,明文:my name is huhx。
@Testpublic voidcommonCodeBase64() {byte[] encodeBytes =Base64.encodeBase64(src.getBytes());
System.out.println("encode: " + newString(encodeBytes));byte[] decodeBytes =Base64.decodeBase64(encodeBytes);
System.out.println("decode: " + newString(decodeBytes));
}
三、 运行结果如下:
encode: bXkgbmFtZSBpcyBodWh4
decode: my nameis huhx
bcprov的Base64算法
一、 引入bcprov-jdk15on-154.jar,提供对base64算法的支持
二、 我们通过junit方法,来加以对Base64算法的测试,明文:my name is huhx。
@Testpublic voidbouncyCodeBase64() {byte[] encodeBytes =org.bouncycastle.util.encoders.Base64.encode(src.getBytes());
System.out.println("encode: " + newString(encodeBytes));byte[] decodeBytes =org.bouncycastle.util.encoders.Base64.decode(encodeBytes);
System.out.println("decode: " + newString(decodeBytes));
}
三、 运行结果如下:
encode: bXkgbmFtZSBpcyBodWh4
decode: my name is huhx
自定义的base64算法
一、 HuhxBase64.java的自定义算法,内容如下:
packagecom.huhx.base64.jdk;/*** writer: huhx*/
public classHuhxBase64 {private static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";//base64解密
private static byte[] base64Decode(String input) {if (input.length() % 4 != 0) {throw new IllegalArgumentException("Invalid base64 input");
}byte decoded[] = new byte[((input.length() * 3) / 4)- (input.indexOf('=') > 0 ? (input.length() - input.indexOf('=')) : 0)];char[] inChars =input.toCharArray();int j = 0;int b[] = new int[4];for (int i = 0; i < inChars.length; i += 4) {//This could be made faster (but more complicated) by precomputing//these index locations.
b[0] =CODES.indexOf(inChars[i]);
b[1] = CODES.indexOf(inChars[i + 1]);
b[2] = CODES.indexOf(inChars[i + 2]);
b[3] = CODES.indexOf(inChars[i + 3]);
decoded[j++] = (byte) ((b[0] << 2) | (b[1] >> 4));if (b[2] < 64) {
decoded[j++] = (byte) ((b[1] << 4) | (b[2] >> 2));if (b[3] < 64) {
decoded[j++] = (byte) ((b[2] << 6) | b[3]);
}
}
}returndecoded;
}//base64加密
private static String base64Encode(byte[] in) {
StringBuilder out= new StringBuilder((in.length * 4) / 3);intb;for (int i = 0; i < in.length; i += 3) {
b= (in[i] & 0xFC) >> 2;
out.append(CODES.charAt(b));
b= (in[i] & 0x03) << 4;if (i + 1
b|= (in[i + 1] & 0xF0) >> 4;
out.append(CODES.charAt(b));
b= (in[i + 1] & 0x0F) << 2;if (i + 2
b|= (in[i + 2] & 0xC0) >> 6;
out.append(CODES.charAt(b));
b= in[i + 2] & 0x3F;
out.append(CODES.charAt(b));
}else{
out.append(CODES.charAt(b));
out.append('=');
}
}else{
out.append(CODES.charAt(b));
out.append("==");
}
}returnout.toString();
}public static voidmain(String[] args) {
String input= "I love you, huhx!";
String encode=base64Encode(input.getBytes());
System.out.println("encode: " +encode);
String decode= newString(base64Decode(encode));
System.out.println("decode: " +decode);
}
}
二、 运行结果如下:
encode: SSBsb3ZlIHlvdSwgaHVoeCE=decode: I love you, huhx!
友情链接
最后
以上就是清新歌曲为你收集整理的base64 算法 java_java基础---->Base64算法的使用的全部内容,希望文章能够帮你解决base64 算法 java_java基础---->Base64算法的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复