这是昨天做一个接口对接时遇到的一个问题。下面是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”)就可以了。