写程序的时候需要用到base64的算法,自己实现时间不够,从网上找,代码无法信赖,所以想问下Base64编码算法是否有java版本的官方实现?或者是否有其他成熟的库实现了base64?
很多同学提到了Apache Commons Codec,查资料看了下,感觉是当前找到的最好的解决方案了,多谢大家让我认识了这么好的库。
编码是开发中基础性的工作,有Codec这种专门解决编码问题的库,实在是方便了很多。建议由同样问题的同学尝试下Codec。
可以将codec做一个薄封装,简化工作流程,如下,供参考:
package apache.commons.codec;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import java.io.UnsupportedEncodingException;
/**
* Created by pengzhenhua on 2016/10/2.
* 封装apache commons codec
*/
public class CodeC {
private static Base64 base64 = new Base64();
/**
* 对字符串进行base64编码,返回编码结果
* 默认先对字符串进行utf8解码,然后进行base64编码
* @param str
* @return
*/
public static String base64(String str){
return base64(str , Encode.UTF8);
}
/**
* 使用指定的编码方式对字符串进行解码,然后进行base64编码
* @param str
* @param encode
* @return
*/
public static String base64(String str , Encode encode){
try {
str = base64.encodeToString(str.getBytes(encode.getName()));
} catch (UnsupportedEncodingException e) {
//just ignore
}
return str;
}
/**
* base64解码
* @param str
* @return
*/
public static String base64Decode(String str){
return new String(Base64.decodeBase64(str));
}
/**
* md5加密
* 使用utf8解码字符串
* @param str
* @return
*/
public static String md5(String str){
return md5(str , Encode.UTF8);
}
/**
* md5加密
* 使用指定编码方式对字符串解码,然后md5加密
* @param str
* @param encode
* @return
*/
public static String md5(String str , Encode encode){
try {
str = new String(DigestUtils.md5Hex(str.getBytes(encode.getName())));
} catch (UnsupportedEncodingException e) {
//just ignore
}
return str;
}
enum Encode{
UTF8("UTF8"),
GBK("gbk")
;
private String name;
Encode(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
Sama seperti di atas: commons-codec-1.10.jar masih sangat dipercayai;
Siarkan sekeping kod:
Terdapat lebih banyak pakej javaUtil selepas jdk1.8
java.util.Base64
Pelaksanaan
sun.misc.BASE64Decoder
sun
. Namun, tidak digalakkan menggunakannya kerana ia termasuk dalam pakejsun
.BASE64 ialah pengekodan, tetapi ia boleh dikodkan/dinyahkod seperti biasa dan tidak akan ada masalah kestabilan.
Anda boleh menggunakan Apache Commons Codec
Nota: Walaupun ia tidak dikemas kini sejak 2016, ia adalah perpustakaan matang dengan sendirinya
Projek Apache Commons masih boleh dipercayai. Codec Apache Commons.