public void GetMD5(String str){
try {
MessageDigest mdi = MessageDigest.getInstance("MD5");
byte[] input = str.getBytes("UTF-8");
byte[] hash = mdi.digest(input);
String d = "";
for (int i=0;i<hash.length;i++){
int v = hash[i] & 0xFF;//作用应该是将字符串前面清零 因为转换为int 时 高位会补位 负数就会产生不一样的效果.
if (v<16) d+="0";
System.out.println(" v :"+v);
d+=Integer.toString(v,16).toLowerCase();
}
System.out.println(d);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
MessageDigest类适用于创建封装了指纹算法的工厂,其静态方法getInstange返回某个算法对象的实例。上面的例子,在SHA1算法是同样可以使用的。里面的主要思路是
1 、调用update方法将信息提供给对象。
2、调用digest算法将信息补齐计算,然后程序会以字节数组的形式返回信息摘要(hash value)
3、得到的信息摘要要逐字符进行转换,先将补齐的效果去掉之后按照16进制将其转换为字符
4、最终得到结果。
以上内容是在学习了JAVA核心技术之后的成果。