Base 64 算法
产生:邮件的“历史问题”,基于64个可打印字符来表示二进制数据;
定义:基于64个字符的编码算法,算法原理简介见博文:BASE64算法实现和使用说明;
衍生:Base16、Base32、Url Base64;
应用场景:e-mail、密钥、证书文件;
Base64 算法以替换方式实现加解密,不符合柯克霍夫原则;
JDK 实现
public static void jdkBase64() throws IOException {
// 编码
BASE64Encoder encoder = new BASE64Encoder();
String encodeStr = encoder.encode(src.getBytes());
System.out.println("encodeStr:" + encodeStr);
// 解码
BASE64Decoder decoder = new BASE64Decoder();
byte[] decode = decoder.decodeBuffer(encodeStr);
String decodeStr = new String(decode);
System.out.println("decodeStr:" + decodeStr);
}
Commons Codec 实现
public static void ccBase64() {
String encodeStr = Base64.encodeBase64String(src.getBytes());
System.out.println("encodeStr:" + encodeStr);
byte[] decode = Base64.decodeBase64(encodeStr);
String decodeStr = new String(decode);
System.out.println("decodeStr:" + decodeStr);
}
Bouncy Castle 实现
public static void bcBase64() {
byte[] encode = org.bouncycastle.util.encoders.Base64.encode(src.getBytes());
String encodeStr = new String(encode);
System.out.println("encodeStr:" + encodeStr);
byte[] decode = org.bouncycastle.util.encoders.Base64.decode(encodeStr);
String decodeStr = new String(decode);
System.out.println("decodeStr:" + decodeStr);
}
一般情况下,不推荐使用 JDK 提供的实现,而是使用 Commons Codec 提供的实现。
主要知识点来源于慕课慕课网上 moocer老师 提供的 java 加密系列教程。 原创不易,如需转载,请标明出处!
最后修改:2019-09-08 03:58:41
© 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

发表评论