JDK自带的java.security.MessageDigest类是一个功能强大的加密算法类,可以利用它进行MD5和SHA加密,使用方便简单,在这里我把代码贴出来,以便以后自己查阅。。。
/**
* sha加密
***/
public static byte[] shaEncrypt(String str) {
byte[] _bytes = null;
try {
MessageDigest md = MessageDigest.getInstance("SHA"); // MD5也是一样的
md.update(str.getBytes());
_bytes = md.digest();
} catch (NoSuchAlgorithmException ex) {
// Logger.getLogger(SHA1.class.getName()).log(Level.SEVERE, null, ex);
}
return _bytes;
}
这里转出来的二进制数组不能直接输出出来,但是可以利用我上一篇文章的二进制数组转十六进制字符串的方法进行一次转换。
/**
*
* @param bytes
* @return 将二进制数组转换为十六进制字符串 2-16
*/
public static String bin2HexStr(byte[] bytes){
String result = "";
String hex = "";
for(int i=;i<bytes.length;i++){
//字节高4位
hex = String.valueOf(hexStr.charAt((bytes[i]&)>>));
//字节低4位
hex += String.valueOf(hexStr.charAt(bytes[i]&));
result +=hex; //+" "
}
return result;
}
下面是测试代码,调用方法非常简单。
public static void main(String[] args) {
System.out.println(bin2HexStr(shaEncrypt("Alex")));
}
最后输出 64542DBABB81DFD446E0CF4F319567C72EE57C7B
是不是非常简单呢,有兴趣的小伙伴可以试试看。。。