<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-348  評(píng)論-598  文章-0  trackbacks-0
    之前寫了一片文章介紹了應(yīng)用內(nèi)外的簽名比較(在Android系統(tǒng)外部和內(nèi)部讀取Android應(yīng)用的簽名),發(fā)現(xiàn)在某些機(jī)器上,讀取安裝包的簽名有的時(shí)候?yàn)榭眨哉伊似渌k法。
        public static String getPathWithPackageName(Context paramContext,
                String paramString) {
            PackageManager pm = paramContext.getPackageManager();
            try {
                PackageInfo pi = pm.getPackageInfo(paramString, 1);
                System.out.println(pi.applicationInfo.publicSourceDir);
                return pi.applicationInfo.publicSourceDir;
            } catch (PackageManager.NameNotFoundException localNameNotFoundException) {

            }
            return null;
        }

        public static String getFileSignatureMd5(String filePath) {
            try {
                JarFile jarFile = new JarFile(filePath);
                JarEntry jarEntry = jarFile.getJarEntry("AndroidManifest.xml");
                if (jarEntry != null) {
                    try {
                        Certificate[] certs = jarEntry.getCertificates();
                        byte[] certBytes = certs[0].getEncoded();
                        String main = StringUtilities
                                .bytesToHexString(CryptoUtilities
                                        .encryptByMD5(certBytes));
                        System.out.println("new to Char " + main.length() + " apk:"
                                + main);
                        return main;
                    } catch (CertificateEncodingException localCertificateEncodingException) {

                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        Handler handler3;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            String installedPath = getPathWithPackageName(this,
                    "cn.emagsoftware.gamehall");
            System.out.println("installedPath=" + installedPath);
            String installedSig = getFileSignatureMd5(installedPath);
            System.out.println("installedSig=" + installedSig);

            String apk = "/sdcard/1.apk";
            String remoteSig = getFileSignatureMd5(apk);
            System.out.println("remoteSig=" + remoteSig);
            System.out.println(installedSig.equals(remoteSig));
        }










    ---------------------------------------------------------
    專注移動(dòng)開發(fā)

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2012-07-04 21:18 TiGERTiAN 閱讀(1674) 評(píng)論(0)  編輯  收藏 所屬分類: Android
    主站蜘蛛池模板: 久久不见久久见免费影院| 亚洲AⅤ无码一区二区三区在线| 亚洲天堂男人影院| 日韩一品在线播放视频一品免费| 一区视频免费观看| 亚洲精品456在线播放| 国产精品免费电影| 免费视频精品一区二区三区 | 久久久久久噜噜精品免费直播| 国产亚洲一区二区精品| 18禁成年无码免费网站无遮挡| 黄色a级免费网站| 中文字幕亚洲综合精品一区| 国产一区二区三区在线免费观看| 日本免费高清视频| 日韩色视频一区二区三区亚洲| 亚洲AV本道一区二区三区四区| 成人性生交大片免费看午夜a| 青柠影视在线观看免费高清 | 男人j进女人p免费视频| 亚洲第一页在线视频| 亚洲AV无码不卡在线观看下载| 最近中文字幕免费mv在线视频| 黄色网址大全免费| 最新国产成人亚洲精品影院| 人人狠狠综合久久亚洲婷婷| 国产成人免费A在线视频| 美丽的姑娘免费观看在线播放| 一级毛片完整版免费播放一区| 亚洲第一男人天堂| 亚洲国产综合精品中文第一区| 亚洲高清偷拍一区二区三区 | 国产精品99久久免费观看| 国产精品自拍亚洲| 精品久久久久久亚洲精品| 亚洲AV无码乱码在线观看裸奔| 亚洲成AⅤ人影院在线观看| 成人免费无码大片a毛片| 最近免费中文字幕大全高清大全1| 亚洲一级片免费看| 日韩在线视频播放免费视频完整版 |