| | |
| | | } |
| | | |
| | | public static String md5Encrypt(String string) { |
| | | byte[] hash; |
| | | try { |
| | | //创建一个MD5算法对象,并获得MD5字节数组,16*8=128位 |
| | | hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8")); |
| | | } catch (NoSuchAlgorithmException e) { |
| | | throw new RuntimeException("Huh, MD5 should be supported?", e); |
| | | } catch (UnsupportedEncodingException e) { |
| | | throw new RuntimeException("Huh, UTF-8 should be supported?", e); |
| | | } |
| | | MessageDigest md5 = null; |
| | | try { |
| | | md5 = MessageDigest.getInstance("MD5"); |
| | | } catch (NoSuchAlgorithmException e) { |
| | | return "check jdk"; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ""; |
| | | } |
| | | char[] charArray = string.toCharArray(); |
| | | byte[] byteArray = new byte[charArray.length]; |
| | | |
| | | //转换为十六进制字符串 |
| | | StringBuilder hex = new StringBuilder(hash.length * 2); |
| | | for (byte b : hash) { |
| | | if ((b & 0xFF) < 0x10) hex.append("0"); |
| | | hex.append(Integer.toHexString(b & 0xFF)); |
| | | for (int i = 0; i < charArray.length; i++) |
| | | byteArray[i] = (byte) charArray[i]; |
| | | byte[] md5Bytes = md5.digest(byteArray); |
| | | StringBuffer hexValue = new StringBuffer(); |
| | | for (int i = 0; i < md5Bytes.length; i++) { |
| | | int val = ((int) md5Bytes[i]) & 0xff; |
| | | if (val < 16) |
| | | hexValue.append("0"); |
| | | hexValue.append(Integer.toHexString(val)); |
| | | } |
| | | return hexValue.toString(); |
| | | } |
| | | return hex.toString(); |
| | | } |
| | | } |