android 获取apk md5值
来源:互联网 发布:淘宝卖家客服电话热线 编辑:程序博客网 时间:2024/06/10 17:50
转载自: http://blog.csdn.net/qq1761310972/article/details/44540955
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();
}
- android 获取apk md5值
- android 获取apk md5值
- 获取Apk 的MD5值
- Android Studio 发布APK以及获取SHA1和MD5值
- 获取apk证书MD5值的方法
- 获取apk的签名MD5值
- 获取apk证书MD5值的方法
- 获取一个现存apk的MD5值
- 获取APK的签名MD5值
- 获取apk证书MD5值的方法
- 获取apk证书MD5值的方法
- Android 获取自己程序APK包的MD5指纹
- android获取APK签名信息及MD5指纹
- android获取APK签名信息及MD5指纹
- android获取APK签名信息及MD5指纹
- Android 获取 APK 签名信息及 MD5 指纹
- 获取android应用或apk的md5指纹方法
- android获取APK签名信息及MD5指纹
- swift常用字符串处理
- 浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
- Javascript图片预加载详解
- 全面解析Linux 内核 3.10.x - initramfs 启动流程
- Coursea Hadoop课堂笔记——Lesson 1: Big Data Hadoop Stack
- android 获取apk md5值
- android初接触之service1
- EditText 的inputType属性
- spark和scala插件中scala版本不同
- 什么时候想放弃了,可以看看这些
- mysql单表查询
- 【Java数据结构】线性表
- 全面解析Linux 内核 3.10.x - 启动1号进程
- 串口通信数据格式那点儿事儿