获取程序自身签名公钥+程序自检测签名

public class UtilSelfCheck {
	private static final String apksign = "************************************************************************************";

	//程序自检测签名
	public static boolean check(Context context) {
		try {
	        String sign = getPublicKey(context);
	        if(apksign.equals(sign))
	        	return true;
	        else
	        	return false;
	        
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}


	
    // 获取程序自身的签名公钥
    private static String getPublicKey(Context context) {
    	try{
            PackageManager pm = context.getApplicationContext().getPackageManager();
            List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_SIGNATURES);
            Iterator<PackageInfo> iter = apps.iterator(); 
            while (iter.hasNext()) {
                PackageInfo packageinfo = iter.next();  
                String packageName = packageinfo.packageName;
                if (packageName.equals(context.getPackageName())) {
                	//DebugUtils.debug("ZzbApplaication","--------->" + packageinfo.signatures[0].toCharsString());
                    
            		CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
            		X509Certificate cert = (X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(packageinfo.signatures[0].toByteArray()));            		
            		String pubKey = new String(Base64.encode(cert.getPublicKey().getEncoded()));          		
            		return  pubKey;
                }
            }
    		
    	} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


        return null;
    }	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值