安卓程序如何获取另一个apk的签名

补充点小知识:

1,字节数组和字符串之间的转换

1、字节数组转换为字符串
byte[] byBuffer = new byte[20];

String strRead = new String(byBuffer);
strRead = String.copyValueOf(strRead.toCharArray(), 0, byBuffer.length]);
2、字符串转换成字节数组
byte[] byBuffer = new byte[200];
String strInput="abcdefg";
byBuffer= strInput.getBytes();
注意:如果字符串里面含有中文,要特别注意,在Android系统下,默认是UTF8编码,一个中文字符相当于3个字节,只有gb2312下一个中文相当于2字节。这种情况下可采取以下办法:
byte[] byBuffer = new byte[200];
String strInput="我是字符串";
byBuffer= strInput.getBytes("gb2312");

2.base64加密
几种加密方式
http://blog.csdn.net/top_code/article/details/11538317

  /** 
     * BASE64 加密 
     * @param str 
     * @return 
     */  
  byte[] encode = str.getBytes("UTF-8");  
            // base64 加密  
            return new String(Base64.encode(encode, 0, encode.length, Base64.DEFAULT), "UTF-8");  

3.获取程序自身的签名
http://blog.csdn.net/wulianghuan/article/details/18400581

private String getSign(Context context) {   
   PackageManager pm = context.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(instance.getPackageName())) {   
           MediaApplication.logD(DownloadApk.class, packageinfo.signatures[0].toCharsString());   
           return packageinfo.signatures[0].toCharsString();   
        }   
}   
   return null;   

4.获取已安装程序的签名
http://lynen.iteye.com/blog/1700126

public Signature getPackageSignature(Context context, String packageName){  
        PackageManager pm = context.getPackageManager();  
        List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_SIGNATURES);  
        Iterator<PackageInfo> it = apps.iterator();  
        while(it.hasNext()){  
            PackageInfo info = it.next();  
            if(info.packageName.equals(packageName)){  
                return info.signatures[0];  
            }  
        }  
        return null;  
    } 
posted @ 2016-05-30 18:39  Tesi1a  阅读(432)  评论(0编辑  收藏  举报