Android获取应用自身相关签名信息
来源:互联网 发布:兼职淘宝模特靠谱吗 编辑:程序博客网 时间:2024/05/01 12:56
Signature.java
import android.content.Context;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.util.Log;import java.io.ByteArrayInputStream;import java.security.MessageDigest;import java.security.cert.CertificateException;import java.security.cert.CertificateFactory;import java.security.cert.X509Certificate;import java.text.SimpleDateFormat;import java.util.HashMap;import java.util.Map;import java.util.Set;public class Signature { public Map<String, String> getSignatureInfo(Context context) { Map<String, String> map = new HashMap<String, String>(); try { PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); android.content.pm.Signature[] signs = packageInfo.signatures; android.content.pm.Signature sign = signs[0]; byte[] signature = sign.toByteArray(); X509Certificate cert = parseSignature(signature); map.put("signName", cert.getSigAlgName()); map.put("pubKey", cert.getPublicKey().toString()); map.put("serialNumber", cert.getSerialNumber().toString()); map.put("sigAlgOID", cert.getSigAlgOID()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); map.put("startTime", sdf.format(cert.getNotBefore())); map.put("endTime", sdf.format(cert.getNotAfter())); map.put("subjectDN", cert.getSubjectDN().toString()); map.put("MD5", getMessageDigest("MD5", signature)); map.put("SHA1", getMessageDigest("SHA1", signature)); map.put("SHA256", getMessageDigest("SHA256", signature)); Set<Map.Entry<String, String>> entrySet = map.entrySet(); for (Map.Entry<String, String> entry : entrySet) { Log.i("",String.format("%s=%s", entry.getKey(), entry.getValue())); } } catch (Exception e) { e.printStackTrace(); } return map; } private String getMessageDigest(String instance, byte[] signature) { String sinfo = null; try { MessageDigest md = MessageDigest.getInstance(instance); md.update(signature); byte[] digest = md.digest(); sinfo = toHexString(digest); } catch (Exception e) { e.printStackTrace(); } return sinfo; } public X509Certificate parseSignature(byte[] signature) { X509Certificate cert = null; try { CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); cert = (X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(signature)); } catch (CertificateException e) { e.printStackTrace(); } return cert; } 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
- Android获取应用自身相关签名信息
- Android获取应用自身相关签名信息
- 获取android签名相关信息
- android获取应用签名信息
- android 获取应用证书及签名信息
- Android获取应用的签名信息
- Android获取应用的签名信息
- Android获取应用的签名信息
- android获取签名信息
- android获取APK文件,及应用内部签名信息方法
- android获取应用签名
- android 获取应用签名
- Android 获取应用签名
- android apk 签名信息 相关
- [.bat][保存以防后面有用哦]获取APK签名信息 , 获取 Android 应用的 Apk 签名
- Android中获取手机自身的信息
- Android:获取APK签名信息
- Android:获取APK签名信息 .
- SQLite学习笔记(13)-事务(2)
- 常用Linux命令
- [ERP管理]实施ERP项目需提防能人插手
- Javascript 数字金额 转换为 大写汉字金额
- IDEA中python内建函数出现红色波浪下划线,但运行正常
- Android获取应用自身相关签名信息
- jq入门:遍历
- HDU-4768 Flyer
- openWRT学习笔记
- c++中map的排序
- 数据结构之链表操作
- Leetcode: Count Prime
- Python 星号(*)操作符的用法
- Python,用pip安装包,报错