JAVA加密算法使用——Base64编程使用(sun和cc)实现编解码工具类
程序员文章站
2022-04-28 21:24:51
...
该博客打算简单介绍下Base64编码以及在java环境下的两种编程使用(sun公司提供的jar和apache提供的jar)//不过我这里是建议大家使用apache提供的BASE64的jar,因为sun内部API sun.misc.BASE64在编译时会出现后期可能被删除的潜在风险警告。所以,大家看着办把…….
该篇博客目录
1、Base64编码示例
2、Base64算法定义
3、Base64两种编程使用(sun.misc.BASE64和commons-codec)实现(编码解码工具类)
一、Base64编码示例
可以百度Base64编码,会有在线编辑器,可以看出明文“hello”经过Base64编码得到密文“aGVsbG8=”
下面是Base64编码表(**)
二、Base64算法定义
Base64是一种基于64个字符的编码算法,从任意8位字节序列组合的描述形式,这种形式不易直接识别,经过Base64编码后的字符串的字符数是以4为单位的整数倍
三、Base64两种编程使用(sun.misc.BASE64和commons-codec)(编码解码工具类)
1、sun.misc.BASE64.jar下
- 该jar包add path
Base64编解码工具类BaseUtil
package Base64Demo;
import java.io.IOException;
import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
/*
*基于"JDK"用法
*/
public class Base64Util {
/*
* 加密过程(编码)
* 1、创建BASE64Encoder对象——en
* 2、调用该对象的encode方法(将一个字节数组的明文进行编码转换为一个字符串)
* 3、返回字符串
* Tip:记得先将明文转换为字节数组
*/
public static String EncodeBase64(byte[] data) {
BASE64Encoder en=new BASE64Encoder();
String str=en.encode(data);
return str;
}
/*
*解密过程(解码)
*1、创建BASE64Decoder对象
*2、调用该对象的decodeBuffer方法(将编码后的字符串转换为明文的字节数组)
*3、将明文字节数组转换为相应的字符串
*4、返回字符串
*/
public static String DecodeBase64(String data) throws IOException {
BASE64Decoder de=new BASE64Decoder();
byte[] ResultByte=de.decodeBuffer(data);
String str=new String(ResultByte);
return str;
}
}
测试类
package Base64Demo;
import java.io.IOException;
import Decoder.BASE64Encoder;
public class Base64Demo01 {
public static final String DATA="hello";
public static void main(String[] args) throws IOException {
byte[] data=DATA.getBytes();
String BaseResult=Base64Util.EncodeBase64(data);
System.out.println("加密后:"+BaseResult);
String str=BaseResult;
String BaseResult_D=Base64Util.DecodeBase64(str);
System.out.println("解密后:"+BaseResult_D);
}
}
2、commons-codec-1.11.jar下
- 将commons-codec-1.11.jar包add path
Base64编解码工具类BaseUtil_cc
package Base64Demo;
import org.apache.commons.codec.binary.Base64;
/*
*基于commons-codec-1.11
*/
public class Base64Utile_cc {
/*
*加密过程
*/
public static String EncodeBase64(byte[] data)
{
Base64 en=new Base64();
String str=en.encodeBase64String(data);
return str;
}
/*
*解密过程
*/
public static String DecodeBase64(String str) {
Base64 de=new Base64();
byte[] ResultBase=de.decodeBase64(str);
String str2=new String(ResultBase);
return str2;
}
}
测试类
package Base64Demo;
public class Base64Demo02 {
public static final String DATA="hello";
public static void main(String[] args) {
/*
*基于commons-codec-1.11
*/
byte[] data=DATA.getBytes();
String str=Base64Utile_cc.EncodeBase64(data);
System.out.println("加密后:"+str);
String str2=Base64Utile_cc.DecodeBase64(str);
System.out.println("解密后:"+str2);
}
}
相应结果和第一种方法是相同的
当然还有其他的jar包可以用,这里就不多做阐述了。
上一篇: notepad++实现文件和base64数据的互转
下一篇: 上传文件file各种类型之间的转换