赞
踩
Base64就是基于英文拼音(大小写各26个共52个)+数字(10个)+两个特殊字符(+/)来实现的一个替换编码。他并非是一个严格意义的加解密的算法,是一种编码的替换格式,对应的编码和值是公开的,比较容易破解,如果加上一些扰码安全性会更高一些!
实现base64加解密目前有三种办法:
第一种:JDK的实现Base64算法
- BASE64Encoder encoder = new BASE64Encoder();
- String encode = encoder.encode(src.getBytes());
- BASE64Decoder decoder = new BASE64Decoder();
如果是jdk1.8以下,提示找不到这个 BASE64Encoder 解决办法:
https://blog.csdn.net/liu578182160/article/details/51153022
第二种:CC (CommonsCodes)实现的Base64算法
- byte[] encodeBytes = Base64.encodeBase64(src.getBytes());
- byte[] decodeBytes = Base64.decodeBase64(encodeBytes);
第三种:BC(BouncyCastle)实现的Base64的算法
- byte[] encodeBytes = org.bouncycastle.util.encoders.Base64.encode(src.getBytes());
- byte[] decodeBytes = org.bouncycastle.util.encoders.Base64.decode(encodeBytes);
Base64算法的应用场景:e-mail;
密钥;证书文件 产生的历史原因:邮件的“历史问题”;
原因是邮件在传输一些非ASCLL码的值,在一些不同的网关或者网络会出现一些问题。
定义:基于64个字符的编码算法。RFC 2045关于Base算法的基本规范;衍生:Base16、Base32、Url Base64;
demo实例代码:
- import java.io.IOException;
-
- import org.apache.commons.codec.binary.Base64;
-
- import com.sun.org.apache.bcel.internal.generic.NEW;
-
- import sun.misc.BASE64Decoder;
- import sun.misc.BASE64Encoder;
- import sun.print.resources.serviceui;
-
- /**
- * base64加密解密
- * @author Lenovo
- *
- */
- public class Base64Demo {
- private static String src = "Hello world";
-
- public static void main(String[] args) {
- jdkBase64();
- commonCodeBase64();
- }
-
- public static void jdkBase64(){
- System.out.println("jdkBase64===============================");
- try {
- BASE64Encoder encoder = new BASE64Encoder();
- String encode = encoder.encode(src.getBytes());
- System.out.println("加密 :"+encode);
- BASE64Decoder decoder = new BASE64Decoder();
- System.out.println("解密 :"+new String(decoder.decodeBuffer(encode)));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public static void commonCodeBase64(){
- System.out.println("commonCodeBase64===============================");
- byte[] encodeBase64 = Base64.encodeBase64(src.getBytes());
- System.out.println("加密 :"+new String(encodeBase64));
- System.out.println("解密 :"+new String(Base64.encodeBase64(encodeBase64)));
- }
- //此jdk版本过低,jdk1.8以下不适用
- public static void bouncyCastleBase64(){
- System.out.println("bouncyCastleBase64===============================");
- byte[] encodeBase64 = org.bouncycastle.util.encoders.Base64.encoder(src.getBytes());
- System.out.println("加密 :"+new String(encodeBase64));
- System.out.println("解密 :"+new String(org.bouncycastle.util.encoders.Base64.decoder(encodeBase64)));
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。