标签:
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( "" ); } } |
标签:
原文地址:http://blog.csdn.net/u014311022/article/details/42675473