Android 获取签名公钥

[1].[代码] [Java]代码 跳至 [1]

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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( "" );
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值