Get MD5 Hash In A Few Lines Of Java
/**
* 對字符串md5加密
*
* @param str
* @return
*/
public String getMD5(String str) {
String ret = null;
try {
// 生成一個MD5加密計算摘要
MessageDigest md = MessageDigest.getInstance("MD5");
// 計算md5函數
md.update(str.getBytes());
// digest()最後確定返回md5 hash值,返回值為8為字符串。因為md5 hash值是16位的hex值,實際上就是8位的字符
// BigInteger函數則將8位的字符串轉換成16位hex值,用字符串來表示;得到字符串形式的hash值
ret = new BigInteger(1, md.digest()).toString(16);
} catch (Exception e) {
//throw new SpeedException("MD5加密出現錯誤");
e.printStackTrace();
}
return ret;
}
java.math.BigInteger.toString(int radix)方法實例
java.math.BigInteger.toString(int radix) 返回此BigInteger在給定的基數的字符串表示形式。如果基數是從Character.MIN_RADIX到Character.MAX_RADIX包容的範圍內,它會默認為10(因為Integer.toString的情況下)。
聲明
以下是java.math.BigInteger.toString()方法的聲明
public String toString(int radix)
參數
radix – 該字符串表示形式的基數
返回值
此方法返回此BigInteger在給定的基數的字符串表示形式。
BigInteger(byte[] val)
BigInteger的大小为val的顺序拼接结果
byte[] val = new byte[]{0x11,0x22,0x33};
BigInteger bigInteger = new BigInteger(val);
System.out.println(bigInteger.toString(16)); //16进制输出 , 结果 : 112233
BigInteger(String val, int radix)
得到大小为val , 以 radix 为基数的 BigInteger
System.out.println(bigInteger.toString(16));//输出结果 1f
System.out.println(bigInteger.toString(10));//输出结果 31
BigInteger b = new BigInteger(s1,16); // 16进制转成大数类型
String s2 = b.toString(16); // 大数类型转成16进制
上列的範例輸入結果:
s1: 126656864e144ad88d7ff96badd2f68b
s2: 126656864e144ad88d7ff96badd2f68b
如果前2碼修改為00,則:
s1: 006656864e144ad88d7ff96badd2f68b
s2: 6656864e144ad88d7ff96badd2f68b
所以,最上面的例子,前面要補滿0 才不會出錯。