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
BigInteger bigInteger = new BigInteger("1F", 16);
System.out.println(bigInteger.toString(16));//输出结果 1f
System.out.println(bigInteger.toString(10));//输出结果 31
String s1 = "126656864e144ad88d7ff96badd2f68b"; // 16进制数 BigInteger b = new BigInteger(s1,16); // 16进制转成大数类型 String s2 = b.toString(16); // 大数类型转成16进制
上列的範例輸入結果:
s1: 126656864e144ad88d7ff96badd2f68b
s2: 126656864e144ad88d7ff96badd2f68b
如果前2碼修改為00,則:
s1: 006656864e144ad88d7ff96badd2f68b
s2: 6656864e144ad88d7ff96badd2f68b
所以,最上面的例子,前面要補滿0 才不會出錯。
太神了 多謝分享!
md5 開頭如果是 0 的話
new BigInteger(1, md.digest())
經過這邊的話開頭的 0 會不見吧?
感謝你的回覆,答案:是的。已增加補充在文章最後。