今天学习了一下 加密技术
查了查发现 原来Java已经自带了 MessageDigest 类
/**
* @param key
*
* @param algorithm
* MD2、MD5、SHA-1、SHA-256、SHA-384、SHA-512
*
* @return String (MD5:32位, SHA-1:40位)
*
*/
private static String getMD(String key, String algorithm) {
try {
MessageDigest md5 = MessageDigest.getInstance(algorithm);
md5.update(key.getBytes());
byte[] b = md5.digest();//digest得到的是byte[] (MD5:16位, SHA-1:20位)
return byte2hexString(b);//将 byte[] 转换成 String
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "NoSuchAlgorithmException!";
}
}
tip:调用 digest() 之后,系统会自动释放。
private static String byte2hexString(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs;
}
Log.d("test",getMD("test","MD5"));
其中需要导入一下两个类:(一般都是自动导入)
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
一个是MessageDigest类,一个是加密异常类
这两个都是JAVA自带的,无需另外加包
暂时就这么多 挺好用的
以后找机会研究研究如何让输出的MD5变成16位的 (*^__^*) 嘻嘻……