Android 获取签名公钥

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("");
	}
}
时间: 2024-09-20 07:51:21

Android 获取签名公钥的相关文章

Android 获取签名公钥和公钥私钥加解密的方法(推荐)_Android

如下所示: public class GetPublicKey { /** * 获取签名公钥 * @param mContext * @return */ protected static String getSignInfo(Context mContext) { String signcode = ""; try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo( GetAppInfo.g

Android 获取签名公钥和公钥私钥加解密的方法(推荐)

如下所示: public class GetPublicKey { /** * 获取签名公钥 * @param mContext * @return */ protected static String getSignInfo(Context mContext) { String signcode = ""; try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo( GetAppInfo.g

Android 获取签名公钥 和 公钥私钥加解密

public class GetPublicKey { /** * 获取签名公钥 * @param mContext * @return */ protected static String getSignInfo(Context mContext) { String signcode = ""; try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo( GetAppInfo.getPack

Android实现获取签名及公钥的方法_Android

本文实例讲述了Android实现获取签名及公钥的方法.分享给大家供大家参考.具体如下: 1. java代码如下:  private byte[] getSign(Context context) { PackageManager pm = context.getPackageManager(); List<PackageInfo> apps = pm .getInstalledPackages(PackageManager.GET_SIGNATURES); Iterator<Packag

md5-android 获取 签名证书的MD5的代码?

问题描述 android 获取 签名证书的MD5的代码? 如题,求助,获取android应用程序apk的签名证书*.keystore中MD5的android代码 解决方案 通过NDK来调用openssl库 解决方案二: 通过NDK来调用openssl库

Android实现获取签名及公钥的方法

本文实例讲述了Android实现获取签名及公钥的方法.分享给大家供大家参考.具体如下: 1. java代码如下: private byte[] getSign(Context context) { PackageManager pm = context.getPackageManager(); List<PackageInfo> apps = pm .getInstalledPackages(PackageManager.GET_SIGNATURES); Iterator<Package

Android 获取 APK 签名信息及 MD5 指纹

   Android 获取 APK 签名信息及 MD5 指纹 1.获取APK的签名信息 private String showUninstallAPKSignatures(String apkPath) { String PATH_PackageParser = "android.content.pm.PackageParser"; try { // apk包的文件路径 // 这是一个Package 解释器, 是隐藏的 // 构造函数的参数只有一个, apk文件的路径 // Packa

Android获取apk签名指纹的md5值(防止重新被打包)的实现方法

本文实例讲述了Android获取apk签名指纹的md5值以防止重新被打包的实现方法.分享给大家供大家参考,具体如下: 做个记录(这里只是Java层的签名校验,java层容易被破解,我建议apk加固下) 获取md5值来进行Apk签名校验, 可以防止apk重新被打包. 下面我说说怎么获取apk签名的md5值(有三种方法) 1.用代码获取签名指纹的md5值 /** * MD5加密 * @param byteStr 需要加密的内容 * @return 返回 byteStr的md5值 */ public

Android 应用签名的两种方法

Android 应用签名的两种方法 一.使用pem签名 (一) apk签名命令 java –jar signapk.jar [-w] publickey.x509[.pem] privatekey.pk8 Hello.apk Hello_signed.apk -w 是指对ROM签名时需使用的参数 publickey.x509[.pem] 签名公钥文件,例如platform.x509.pem,在build\target\product\security下 privatekey.pk8 签名私钥文件