获取app应用的公钥
1、获取方法,代码如下:
private byte[] getSign(Context context) {
PackageManager pm = context.getPackageManager();
List<PackageInfo> apps = pm
.getInstalledPackages(PackageManager.GET_SIGNATURES);
Iterator<PackageInfo> iter = apps.iterator();
Log.i("签名1", iter+"");
Log.i("监听1","----------");
while (iter.hasNext()) {
PackageInfo info = iter.next();
String packageName = info.packageName;
//按包名 取签名
if (packageName.equals("com.example.babycare")) {
Log.i("监听1",info.signatures[0].toByteArray()+"----------");
return info.signatures[0].toByteArray();
}
}
return null;
}
public static String getPublicKey(byte[] signature) {
try {
CertificateFactory certFactory = CertificateFactory
.getInstance("X.509");
X509Certificate cert = (X509Certificate) certFactory
.generateCertificate(new ByteArrayInputStream(signature));
Log.i("监听2", "22");
String publickey = cert.getPublicKey().toString();
Log.d("-------密码TRACK", publickey);
// publickey = publickey.substring(publickey.indexOf("modulus:") + 9,publickey.indexOf("\n", publickey.indexOf("modulus:")));
Log.d("-------密码TRACK", publickey);
return publickey;
} catch (CertificateException e) {
e.printStackTrace();
}
return null;
}
2.在oncreate()中调用getPublicKey(this.getSign(getApplicationContext()));
3.即可在日志中查看公钥: