編輯:關於Android編程
本文實例講述了Android獲取apk簽名指紋的md5值以防止重新被打包的實現方法。分享給大家供大家參考,具體如下:
做個記錄(這裡只是Java層的簽名校驗,java層容易被破解,我建議apk加固下)
獲取md5值來進行Apk簽名校驗, 可以防止apk重新被打包。
下面我說說怎麼獲取apk簽名的md5值(有三種方法)
1.用代碼獲取簽名指紋的md5值
/** * MD5加密 * @param byteStr 需要加密的內容 * @return 返回 byteStr的md5值 */ public static String encryptionMD5(byte[] byteStr) { MessageDigest messageDigest = null; StringBuffer md5StrBuff = new StringBuffer(); try { messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(byteStr); byte[] byteArray = messageDigest.digest(); for (int i = 0; i < byteArray.length; i++) { if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) { md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i])); } else { md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); } } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return md5StrBuff.toString(); }
/** * 獲取app簽名md5值 */ public String getSignMd5Str() { try { PackageInfo packageInfo = mActivity.getPackageManager().getPackageInfo(mActivity.getPackageName(), PackageManager.GET_SIGNATURES); Signature[] signs = packageInfo.signatures; Signature sign = signs[0]; String signStr = encryptionMD5(sign.toByteArray()); return signStr; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return ""; }
2. keytool工具
使用keytool工具獲取簽名md5信息,下面 key是簽名文件
復制代碼 代碼如下:C:\Program Files\Java\jdk1.8.0_05\bin>keytool -list -v -keystore C:\Users\Administrator\Desktop\key
3. Eclipse 裡面可以查看簽名信息 這裡就不贅述
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android控件用法總結》、《Android視圖View技巧總結》、《Android文件操作技巧匯總》、《Android操作SQLite數據庫技巧總結》、《Android操作json格式數據技巧總結》、《Android數據庫操作技巧總結》、《Android編程之activity操作技巧總結》、《Android編程開發之SD卡操作方法匯總》、《Android開發入門與進階教程》及《Android資源操作技巧匯總》
希望本文所述對大家Android程序設計有所幫助。
在購買商品時,大家可以自定義數字加減控件,來確定購買商品的實際數量,如何實現此控件,請參考下文:1.自定義數字加減控件的要求創建Module -NumberAddSubV
啟動模式:LaunchMode在多個Activity跳轉的過程中扮演著重要的角色,它可以決定是否生成新的Activity實例,是否重用已存在的Activity實例,是否和
准備工作:利用github第三方添加輪播圖 基於MVP模式搭建架構 調試添加輪播圖:可參考:github輪播圖Banner添加依賴://添加Retrofit的依賴和Gli
一、繼承listActivity、使用arrayAdapter使用ListView和arrayAdapter布局,是ListView布局中最為簡單的一種,首先我們會建立一
今天調試一個bug的時候,情景如下:一個Activity A,需要用st