Java tutorial
//package com.java2s; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Main { private static final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; public static String encryptMD5ToString(String data) { return encryptMD5ToString(data.getBytes()); } public static String encryptMD5ToString(String data, String salt) { return bytes2HexString(encryptMD5((data + salt).getBytes())); } public static String encryptMD5ToString(byte[] data) { return bytes2HexString(encryptMD5(data)); } public static String encryptMD5ToString(byte[] data, byte[] salt) { if (data == null || salt == null) return null; byte[] dataSalt = new byte[data.length + salt.length]; System.arraycopy(data, 0, dataSalt, 0, data.length); System.arraycopy(salt, 0, dataSalt, data.length, salt.length); return bytes2HexString(encryptMD5(dataSalt)); } private static String bytes2HexString(byte[] bytes) { if (bytes == null) return null; int len = bytes.length; if (len <= 0) return null; char[] ret = new char[len << 1]; for (int i = 0, j = 0; i < len; i++) { ret[j++] = hexDigits[bytes[i] >>> 4 & 0x0f]; ret[j++] = hexDigits[bytes[i] & 0x0f]; } return new String(ret); } public static byte[] encryptMD5(byte[] data) { return hashTemplate(data, "MD5"); } private static byte[] hashTemplate(byte[] data, String algorithm) { if (data == null || data.length <= 0) return null; try { MessageDigest md = MessageDigest.getInstance(algorithm); md.update(data); return md.digest(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } } }