- public class GetPublicKey {
- /**
- * 获取签名公钥
- * @param mContext
- * @return
- */
- protected static String getSignInfo(Context mContext) {
- String signcode = "";
- try {
- PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(
- GetAppInfo.getPackageName(mContext), PackageManager.GET_SIGNATURES);
- Signature[] signs = packageInfo.signatures;
- Signature sign = signs[0];
- signcode = parseSignature(sign.toByteArray());
- signcode = signcode.toLowerCase();
- } catch (Exception e) {
- Log.e(Constants.TAG, e.getMessage(), e);
- }
- 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) {
- Log.e(Constants.TAG, e.getMessage(), e);
- }
- return sign;
- }
- public static String subString(String sub) {
- Pattern pp = Pattern.compile("\\\\s*|\\t|\\r|\\n");
- Matcher mm = pp.matcher(sub);
- return mm.replaceAll("");
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1411201410980.html
来源: http://www.codesnippet.cn/detail/1411201410980.html