BASE64的三种实现方法
- JDK:由于JDK不建议使用,所以在使用Eclipse编写的时候要解开限制,方法是设置Windows->Prefrences->Java->Compiler->Errors/Warnings->Deprecated and trstricted API->Forbidden reference(access rules)->Warining,然后在project build path中移除JRE System Library,保存,再添加库JRE System Library,重新编译
- Commons Codec
- Bouncy Castle
Maven依赖
<dependencies>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency>
</dependencies>
Base64Test类
package com.freud.test.security;
import java.io.IOException;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
*
* Base64的各种加解密过程
*
* @author Freud Kang
*
*/
public class Base64Test {
private static final String src = "Keep Hungry, Keep Stupid!";
public static void main(String[] args) throws Exception {
System.out.println("明文:" + src);
System.out.println("-----JDK-----");
jdkBase64();
System.out.println("-----Commons Codec-----");
commonsCodecBase64();
System.out.println("-----Bouncy Castle-----");
bouncyCastleBase64();
}
/**
* JDK Base64加解密
*
* @throws IOException
*/
public static void jdkBase64() throws IOException {
BASE64Encoder encoder = new BASE64Encoder();
String encode = encoder.encode(src.getBytes());
System.out.println("经过JDK的BASE64加密:" + encode);
System.out.println("经过JDK的BASE64解密:"
+ new String(new BASE64Decoder().decodeBuffer(encode)));
}
/**
* Commons Codec Base64加解密
*/
public static void commonsCodecBase64() {
byte[] encodeBytes = Base64.encodeBase64(src.getBytes());
System.out.println("Commones codec加密结果:" + new String(encodeBytes));
byte[] decodeBytes = Base64.decodeBase64(encodeBytes);
System.out.println("Commones codec解密结果:" + new String(decodeBytes));
}
/**
* Bouncy Castle Base64加解密
*/
public static void bouncyCastleBase64() {
byte[] encodeBytes = org.bouncycastle.util.encoders.Base64.encode(src
.getBytes());
System.out.println("BouncyCastle加密结果:" + new String(encodeBytes));
byte[] decodeBytes = org.bouncycastle.util.encoders.Base64
.decode(encodeBytes);
System.out.println("BouncyCastle加密结果:" + new String(decodeBytes));
}
}
参考资料