android 计算程序的MD5值
package com.sun.md5; import java.security.MessageDigest; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.os.Bundle; import android.util.Log; public class ApplicationMd5_Activity extends Activity { /** Called when the activity is first created. */ private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); PackageManager pm = getPackageManager(); try { PackageInfo info = pm.getPackageInfo("com.nd.assistance", PackageManager.GET_SIGNATURES); Log.i("test", String.format("pkg=%s, sig=%s", info.packageName, signatureMD5(info.signatures))); //Log.i("test", String.format("pkg=%s, sig=%s", info.packageName, signatureMD5(info.signatures))); } catch (NameNotFoundException e) { e.printStackTrace(); } } private static String toHexString(byte[] b) { StringBuilder sb = new StringBuilder(b.length * 2); for (int i = 0; i < b.length; i++) { sb.append(HEX_DIGITS[(b[i] & 0xf0) >>> 4]); sb.append(HEX_DIGITS[b[i] & 0x0f]); } return sb.toString(); } public static String signatureMD5(Signature[] signatures) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); if (signatures != null) { for (Signature s : signatures) digest.update(s.toByteArray()); } return toHexString(digest.digest()); } catch (Exception e) { return ""; } } }