版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31301681/article/details/77722474
1.产生的原因:邮件在通过网关的时候,存在不能被识别的字符,所以需要将字符转成可被识别的字符
2.Base64 是基于 64 个字符的编码算法
3.常用的 Base64 加密算法,有 3 中,分别是 jdk 的实现 , commons codec 的实现 ,bouncy Castle 的实现 。
4.Base64 作为一种加密的的算法,但是违反了 “”柯克霍夫原则 “” ,较容易被破解
5.下面提供 jdk的实现,跟 commons codec 的实现:
public class Base64_Encrypt {
/**
* 使用 jdk 的 Base64 加密算法对数据进行加密
* @param src 需要加密的数据
* @return 加密后的数据
*/
public static String JDK_EecodeGetString(String src){
BASE64Encoder encoder = new BASE64Encoder();
String encode = encoder.encode(src.getBytes());
return encode;
}
/**
* 使用 jdk 的 Base64 加密算法对数据进行加密
* @param src 需要加密的数据
* @return 加密后的数据
*/
public static byte[] JDK_EecodeGetBytes(String src){
byte[] encode = JDK_EecodeGetString(src).getBytes();
return encode;
}
/**
* 使用 jdk 的 Base64 加密算法对数据进行解密
* @param src 需要解密的数据
* @return 解密后的数据
* @throws IOException
*/
public static String JDK_DecodeGetString(String src) throws IOException{
String decode = new String(JDK_DecodeGetBytes(src));
return decode;
}
/**
* 使用 jdk 的 Base64 加密算法对数据进行解密
* @param src 需要解密的数据
* @return 解密后的数据
* @throws IOException
*/
public static byte[] JDK_DecodeGetBytes(String src) throws IOException{
BASE64Decoder decoder = new BASE64Decoder();
byte[] decode = decoder.decodeBuffer(src);
return decode;
}
/**
* 使用 Commons Codec 对数据进行加密
* @param src 需要加密的数据
* @return 加密后数据
*/
public static String CommonsCodec_EecodeGetString(String src){
String encode = new String(CommonsCodec_EecodeGetBytes(src));
return encode;
}
/**
* 使用 Commons Codec 对数据进行加密
* @param src 需要加密的数据
* @return 加密后数据
*/
public static byte[] CommonsCodec_EecodeGetBytes(String src){
byte[] encode = Base64.encodeBase64(src.getBytes());
return encode;
}
/**
* 使用 Commons Codec 对数据进行解码
* @param src 需要解密的数据
* @return 解密后的数据
*/
public static String CommonsCodec_DecodeGetString(String src){
String decode = new String(CommonsCodec_DecodeGetBytes(src));
return decode;
}
/**
* 使用 Commons Codec 对数据进行解码
* @param src 需要解密的数据
* @return 解密后的数据
*/
public static byte[] CommonsCodec_DecodeGetBytes(String src){
byte[] decode = Base64.decodeBase64(src.getBytes());
return decode;
}
/**
* 使用 Commons Codec 对数据进行解码
* @param bytes 需要解密的数据
* @return 解密后的数据
*/
public static String CommonsCodec_DecodeGetString(byte[] bytes){
String decode = new String(CommonsCodec_DecodeGetBytes(bytes));
return decode;
}
/**
* 使用 Commons Codec 对数据进行解码
* @param bytes 需要解密的数据
* @return 解密后的数据
*/
public static byte[] CommonsCodec_DecodeGetBytes(byte[] bytes){
byte[] decode = Base64.decodeBase64(bytes);
return decode;
}
}