木头人
2017-10-16 23:07:09
Apache的加密算法和java自带的加密算法
最近研究了下加密的操作,自己本身对加密不是很熟悉,看了一下java对加密的一些操作,在这里总结一下。java从1.5之后提供了Base64Encoder和Base64Decoder。为大家用的普遍的方法先MD5加密然后base64编码,代码如下:
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import sun.misc.BASE64Encoder;
public class EncryptUtil {
/**
* 使用java原生(先MD5加密在base64编码)
*
* @param str
* @return
*/
public static String MD5Encode(String str) {
String newString = "";
BASE64Encoder base64Encoder = new BASE64Encoder();
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
newString = base64Encoder.encode(digest.digest(str
.getBytes("utf-8")));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return newString;
}
/**
* 使用Apache的工具类
* @param str
* @return
*/
public static String MD5Encode2(String str) {
String newString = "";
try {
newString = Base64.encodeBase64String(DigestUtils.md5(str
.getBytes("utf-8")));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return newString;
}
public static void main(String[] args) {
System.out.println(EncryptUtil.MD5Encode("哆啦A梦"));
System.out.println(EncryptUtil.MD5Encode2("哆啦A梦"));
}
}
看了下源码,Apache的MD5加密底层用的是java的MessageDigest,使用起来较为方便。当然还对sha算法进行了封装:
public String encode(String str) {
try {
Hex.encodeHexString(DigestUtils.md5(str));
//查看源码等价于
DigestUtils.md5Hex(str);
DigestUtils.shaHex(str);
Hex.encodeHexString(DigestUtils.sha256(str));
//查看源码等价于
DigestUtils.sha256Hex(str.getBytes("utf-8"));
DigestUtils.sha384Hex(str);
DigestUtils.sha512Hex(str);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
}
评论




最近浏览
