android代码获取当前apk md5,android 获取apk md5值

android 获取apk md5值

1, 获取 Signature

2.   根据Signature计算md5和sha1信息,获取签名公钥信息

TextView text = null;

StringBuffer sb = new StringBuffer();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

text = (TextView) findViewById(R.id.text);

try {

PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);

Signature signatures = pi.signatures[0];

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(signatures.toByteArray());

byte[] digest = md.digest();

String res = toHexString(digest);

Log.e(TAG, "apk md5 = "+res);

sb.append("apk md5 = "+res);

MessageDigest md2 = MessageDigest.getInstance("SHA1");

md2.update(signatures.toByteArray());

byte[] digest2 = md.digest();

String res2 = toHexString(digest2);

Log.e(TAG, "apk SHA1 = "+res2);

sb.append("\napk SHA1 = "+res2);

ByteArrayInputStream bais = new ByteArrayInputStream(signatures.toByteArray());

CertificateFactory cf = CertificateFactory.getInstance("X.509");

X509Certificate cert = (X509Certificate)cf.generateCertificate(bais);

String sigAlgName = cert.getSigAlgName();

String subjectDN = cert.getSubjectDN().toString();

Log.e(TAG, "sigAlgName = "+sigAlgName);

Log.e(TAG, "subjectDN = "+subjectDN);

sb.append("\n sigAlgName = "+sigAlgName);

sb.append("\n subjectDN = "+subjectDN);

bais.close();

} catch (NameNotFoundException e) {

e.printStackTrace();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (CertificateException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

text.setText(sb.toString());

}

private void byte2hex(byte b, StringBuffer buf) {

char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',

'9', 'A', 'B', 'C', 'D', 'E', 'F' };

int high = ((b & 0xf0) >> 4);

int low = (b & 0x0f);

buf.append(hexChars[high]);

buf.append(hexChars[low]);

}

/*

* Converts a byte array to hex string

*/

private String toHexString(byte[] block) {

StringBuffer buf = new StringBuffer();

int len = block.length;

for (int i = 0; i < len; i++) {

byte2hex(block[i], buf);

if (i < len-1) {

buf.append(":");

}

}

return buf.toString();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值