Android获取应用自身相关签名信息
来源:互联网 发布:海王星股票交易软件 编辑:程序博客网 时间:2024/05/01 18:41
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签名信息 .
- Google使用技巧
- QTWidgets:No such file or dicrectory 通用处理办法
- HBASE的那些报错那些坑
- Android Studio JDK版本问题报错
- android开机动画修改(MTK)
- Android获取应用自身相关签名信息
- 整数排序
- bzoj 3834: [Poi2014]Solar Panels 分块
- iOS 大量圆角的使用影响性能问题
- TCP协议详解
- 拓扑自动发现、网络拓扑管理方案
- XOR 加密简介
- javascript:获取当前时间并转换为字符串
- 044-Java-035