public class SignInfo { public static final String TAG = "SignInfo"; /** * 获取签名公钥 * * @param mContext * @return */ protected static String getSignInfo(Context mContext) { String signcode = ""; try { PackageInfo packageInfo = mContext.getPackageManager() .getPackageInfo(mContext.getPackageName(), PackageManager.GET_SIGNATURES); Signature[] signs = packageInfo.signatures; Signature sign = signs[0]; signcode = parseSignature(sign.toByteArray()); signcode = signcode.toLowerCase(); } catch (Exception e) { DebugUtil.e(TAG, e.getMessage()); } return signcode; } protected static String parseSignature(byte[] signature) { String sign = ""; try { CertificateFactory certFactory = CertificateFactory .getInstance("X.509"); X509Certificate cert = (X509Certificate) certFactory .generateCertificate(new ByteArrayInputStream(signature)); String pubKey = cert.getPublicKey().toString(); String ss = subString(pubKey); ss = ss.replace(",", ""); ss = ss.toLowerCase(); int aa = ss.indexOf("modulus"); int bb = ss.indexOf("publicexponent"); sign = ss.substring(aa + 8, bb); } catch (CertificateException e) { DebugUtil.e(TAG, e.getMessage()); } return sign; } public static String subString(String sub) { Pattern pp = Pattern.compile("\\s*|\t|\r|\n"); Matcher mm = pp.matcher(sub); return mm.replaceAll(""); } }
时间: 2024-11-07 10:26:51