這是昨天做一個接口對接時遇到的一個問題。下面是md5加密的算法
1 public static String md555(String plainText) throws UnsupportedEncodingException { 2 byte[] secretBytes = null; 3 try { 4 secretBytes = MessageDigest.getInstance("md5").digest( 5 plainText.getBytes()); 6 } catch (NoSuchAlgorithmException e) { 7 throw new RuntimeException("沒有md5這個算法!"); 8 } 9 String md5code = new BigInteger(1, secretBytes).toString(16);// 16進制數字 10 // 如果生成數字未滿32位,需要前面補0 11 for (int i = 0; i < 32 - md5code.length(); i++) { 12 md5code = "0" + md5code; 13 } 14 return md5code; 15 }
這里會出現的問題是字符串編碼問題,如果不進行編碼的話有可能會產生不一樣的密文。這里只需要改成
plainText.getBytes(“utf-8”)就可以了。