安卓擷取某apk的簽名資訊,可用作防盜版進入。

來源:互聯網
上載者:User

標籤:盜版   簽名資訊   第三方apk   

    

              一般項目中有防盜版的需求,必須是正版軟體才能使用,這就需要擷取當前安裝包的簽名資訊和提前規定的簽名,Md5值做驗證,或者發布時候要檢驗apk簽名資訊以防止發錯包,造成不必要的損失。


    擷取簽名資訊,通過遍曆已安裝的apk 獲得安裝過的對應apk是否與已知apk簽名一致

,包名你也可以指定任意已安裝過的apk,可以擷取第三方apk的簽名哦


/** * 擷取簽名資訊 *  * @param aContext *            Context * @return 簽名String */@SuppressWarnings("unused")private byte[] getSign(String mPakgeName) {List<PackageInfo> apps = pManager.getInstalledPackages(PackageManager.GET_SIGNATURES);Iterator<PackageInfo> iter = apps.iterator();PackageInfo info;while (iter.hasNext()) {info = iter.next();if (TextUtils.equals(info.packageName, mPakgeName)) {if (info.signatures.length > 0) {return info.signatures[0].toCharsString().getBytes();}}}return null;}

 2   得到位元組後 ,需要轉化出成md5


 /** 得到簽名. * @param mPakgeName * @return */private String  getgetSignMd5(String mPakgeName) {    byte[] signatture = getSign(mPakgeName);        if (signatture == null) {            return null;        }    if (TextUtils.isEmpty(signatture.toString()))  {       return null;    }        try {digest = MessageDigest.getInstance("Md5");digest.update(signatture);} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();}    //此處為第三方應用使用的簽名演算法      byte[] b = digest.digest();      char[] HEXCHAR = {      //列舉一個簽名演算法 ,此處應是你方應用自己的演算法                  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',                  'a', 'b', 'c', 'd', 'e', 'f'          };          StringBuilder sb = new StringBuilder(b.length * 2);          for (int i = 0; i < b.length; i++) {              sb.append(HEXCHAR[(b[i] & 0xf0) >>> 4]);              sb.append(HEXCHAR[(b[i] & 0x0f)]);          }    return sb.toString(); }

  3 有時候我們需要獲得非系統apk應用資訊

/** 擷取非預裝的app * @return */public static List<PackageInfo> getAllApps() {     apps = new ArrayList<PackageInfo>();     paklist = pManager.getInstalledPackages(0);     for (int i = 0; i < paklist.size(); i++) {         PackageInfo pak = (PackageInfo) paklist.get(i);         //判斷是否為非系統預裝的應用程式         if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {                        apps.add(pak);         }     }     return apps; }


 xml 布局很簡單 因此不再多說了 不說了  比如擷取微博的簽名資訊。



安卓擷取某apk的簽名資訊,可用作防盜版進入。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.