Java tutorial
//package com.java2s; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Collections; import java.util.Comparator; import java.util.List; import org.apache.http.NameValuePair; import android.util.Base64; public class Main { public static String getKeyFromParams(List<NameValuePair> nameValuePairs, String publishId) { Collections.sort(nameValuePairs, new Comparator<NameValuePair>() { @Override public int compare(NameValuePair p1, NameValuePair p2) { return p1.getName().compareTo(p2.getName()); } }); StringBuilder keyBuilder = new StringBuilder(); boolean isFirst = true; for (NameValuePair nvp : nameValuePairs) { if (!isFirst) { keyBuilder.append("&"); } keyBuilder.append(nvp.getName()).append("=").append(nvp.getValue()); isFirst = false; } keyBuilder.append("&").append(publishId); String key = keyBuilder.toString(); byte[] keyBytes = getBytes(key); return getMd5Digest(new String(Base64.encode(keyBytes, Base64.NO_WRAP))); } private static byte[] getBytes(String s) { try { return s.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { return s.getBytes(); } } public static String getMd5Digest(String pInput) { try { MessageDigest lDigest = MessageDigest.getInstance("MD5"); lDigest.update(getBytes(pInput)); BigInteger lHashInt = new BigInteger(1, lDigest.digest()); return String.format("%1$032X", lHashInt); } catch (NoSuchAlgorithmException lException) { throw new RuntimeException(lException); } } }