Java实现Base64加解密的⽅式Java实现Base64加解密的⽅式主要有以下四种(推荐度由低到⾼):
1:JDK中的sun.misc套件
2:第三⽅扩展包 bouncy castle
3:第三⽅扩展包 commons codec
4:JDK8及更⾼版本中的 java.util.Base64
JDK中的sun.misc套件使⽤较为⿇烦,⾸次使⽤不到包,需要对Eclipse做相关配置
相关问题的参考链接:
解决Eclipse中⽆法直接使⽤Base64Encoder的问题:
eclipse报Access restriction: The type ‘BASE64Decoder’ is not API处理⽅法:package com.base64.demo;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Base64JDK {
private static final String DATA ="com.base64.demo";
public static void main( String[] args ){
try{
// BASE64加密
BASE64Encoder encoder =new BASE64Encoder();
String data = Bytes());
System.out.println("BASE64加密:"+ data);
// BASE64解密
BASE64Decoder decoder =new BASE64Decoder();
byte[] bytes = decoder.decodeBuffer(data);
System.out.println("BASE64解密:"+new String(bytes));
// 结果
// BASE64加密:Y29tLmJhc2U2NC5kZW1v
// BASE64解密:com.base64.demo
}catch(Exception e){
System.out.println("BASE64加解密异常");
e.printStackTrace();
}
}
}
第三⽅扩展包 bouncy castle
Maven引⼊jar包
<!-- mvnrepository/artifact/org.bouncycastle/bcprov-jdk15on -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.60</version>
</dependency>
代码如下:
import org.ders.Base64;
public class Base64BouncyCastle {
private static final String DATA ="com.base64.demo";
public static void main( String[] args ){
try{
// BASE64加密
byte[] data = Bytes());
System.out.println("BASE64加密:"+new String(data));
// BASE64解密
byte[] bytes = Base64.decode(data);
System.out.println("BASE64解密:"+new String(bytes));
// 结果
// BASE64加密:Y29tLmJhc2U2NC5kZW1v
// BASE64解密:com.base64.demo
}catch(Exception e){
System.out.println("BASE64加解密异常");
e.printStackTrace();
}
}
}
第三⽅扩展包 commons codec
Maven引⼊jar包
<!-- mvnrepository/artifact/commons-codec/commons-codec --> <dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
java源代码加密
</dependency>
代码如下:
import dec.binary.Base64;
public class Base64CommonsCodec {
private static final String DATA ="com.base64.demo";
public static void main( String[] args ){
try{
// BASE64加密
byte[] data = Bytes());
System.out.println("BASE64加密:"+new String(data));
/
/ BASE64解密
byte[] bytes = Base64.decodeBase64(data);
System.out.println("BASE64解密:"+new String(bytes));
// 结果
// BASE64加密:Y29tLmJhc2U2NC5kZW1v
// BASE64解密:com.base64.demo
}catch(Exception e){
System.out.println("BASE64加解密异常");
e.printStackTrace();
}
}
}
JDK8及更⾼版本中的 java.util.Base64
在Java 8中,Base64编码已经成为Java类库的标准。
Base64⼯具类提供了⼀套静态⽅法获取下⾯三种BASE64编解码器:
基本:输出被映射到⼀组字符A-Za-z0-9+/,编码不添加任何⾏标,输出的解码仅⽀持A-Za-z0-9+/。
URL:输出映射到⼀组字符A-Za-z0-9+_,输出是URL和⽂件。
MIME:输出隐射到MIME友好格式。输出每⾏不超过76字符,并且使⽤’\r’并跟随’\n’作为分割。编码输出最后没有⾏分割。代码如下:
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;
/**
* 与sun.misc套件和Apache Commons Codec所提供的Base64编解码器来⽐较的话,
* Java 8提供的Base64拥有更好的效能。
* 实际测试编码与解码速度的话,Java 8提供的Base64,要⽐sun.misc套件提供的还要快⾄少11倍, * ⽐Apache Commons Codec提供的还要快⾄少3倍。
* 因此在Java上若要使⽤Base64,这个Java 8底下的java .util套件所提供的Base64类别绝对是⾸选! * 参考链接:/java-base64/
*/
public class Base64JDK8 {
private static final String DATA ="com.base64.demo";
public static void main( String[] args ){
try{
// BASE64加密
Encoder encoder = Encoder();
byte[] data = Bytes());
System.out.println("BASE64加密:"+new String(data));
// 或者采⽤以下⽅法,但是不赞成使⽤该⽅法,源码也做了@deprecation标记
System.out.println("BASE64加密:"+ Bytes()));
//      -----------------------------------------------------------
//            @SuppressWarnings("deprecation")
//            public String encodeToString(byte[] src) {
//                byte[] encoded = encode(src);
//                return new String(encoded, 0, 0, encoded.length);
//            }
/
/      -----------------------------------------------------------
// BASE64解密
Decoder decoder = Decoder();
byte[] bytes = decoder.decode(data);
System.out.println("BASE64解密:"+new String(bytes));
// 结果
// BASE64加密:Y29tLmJhc2U2NC5kZW1v
// BASE64解密:com.base64.demo
}catch(Exception e){
System.out.println("BASE64加解密异常");
e.printStackTrace();
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。