Java tutorial
//package com.java2s; import java.security.MessageDigest; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; public class Main { public static String getSignature(Context context) { PackageManager pm = context.getPackageManager(); PackageInfo pi = null; StringBuilder builder = new StringBuilder(); try { pi = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); Signature[] signatures = pi.signatures; for (Signature signature : signatures) { builder.append(getMessageDigest(signature.toByteArray())); } return builder.toString(); } catch (Exception e1) { e1.printStackTrace(); return ""; } } public static String getMessageDigest(byte[] paramArrayOfByte) { char[] arrayOfChar1 = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102 }; String str; try { MessageDigest localMessageDigest = MessageDigest.getInstance("MD5"); localMessageDigest.update(paramArrayOfByte); byte[] arrayOfByte = localMessageDigest.digest(); int i = arrayOfByte.length; char[] arrayOfChar2 = new char[i * 2]; int j = 0; int k = 0; while (true) { if (j >= i) { str = new String(arrayOfChar2); break; } int m = arrayOfByte[j]; int n = k + 1; arrayOfChar2[k] = arrayOfChar1[(0xF & m >>> 4)]; k = n + 1; arrayOfChar2[n] = arrayOfChar1[(m & 0xF)]; j++; } } catch (Exception localException) { str = null; } return str; } }