您的位置:首页 > 其它

如何读取APK中的签名信息

2011-06-01 15:48 731 查看
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
PackageManager pckMan = getPackageManager();

String issuerDN = null;
String subjectDN = null;
String publickey = null;

boolean isSystemApp = false;

List<PackageInfo> packs = pckMan.getInstalledPackages(PackageManager.GET_SIGNATURES);

int count = packs.size();

for (int i = 0; i < count; i++) {
isSystemApp = false;

PackageInfo pi = packs.get(i);
if (pi.versionName == null)
continue;

if ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) {
isSystemApp = true;
}

try {
byte[] signature = pi.signatures[0].toByteArray();
String hash = md5(signature);
CertificateFactory certFactory =
CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)
certFactory.generateCertificate(
new ByteArrayInputStream(signature));

String appname = pi.applicationInfo.loadLabel(pckMan).toString();

Log.d("TRACK", appname);
issuerDN = cert.getIssuerDN().toString();
Log.d("TRACK", issuerDN);
subjectDN = cert.getSubjectDN().toString();
Log.d("TRACK", subjectDN);
publickey = cert.getPublicKey().toString();
Log.d("TRACK", publickey);
Log.d("TRACK-HASH", hash);
} catch (CertificateException e) {
e.printStackTrace();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: