我想創建一個安全應用程序,並希望檢查下載的應用程序是否未被篡改, 我發現了一個使用jarsigner
實用程序驗證應用程序的解決方案,但是可以通過編程實現嗎?在Android系統上運行Jarsigner實用程序
我已經看到我們可以添加二進制文件並以編程方式使用它,我可以在這種情況下做到這一點嗎?怎麼樣??
我想創建一個安全應用程序,並希望檢查下載的應用程序是否未被篡改, 我發現了一個使用jarsigner
實用程序驗證應用程序的解決方案,但是可以通過編程實現嗎?在Android系統上運行Jarsigner實用程序
我已經看到我們可以添加二進制文件並以編程方式使用它,我可以在這種情況下做到這一點嗎?怎麼樣??
Android檢查APK簽名是否在安裝時驗證,您不必手動執行。但是,這並不意味着簽名是您的簽名,任何人都可以重新簽名APK。隨着最近所謂的'MasterKey'漏洞,APK可以被修改而不會使簽名無效(就Android而言)。所以,如果你想確保你得到了你期望的相同的二進制文件,可以計算出它的SHA1等哈希,並與你所期望的相比較。您還可以檢查簽名證書是否屬於您自己的。這會給你的二進制證書:
PackageManager pm = getPackageManager();
byte[] certDer = pm.getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES).signatures[0];
這裏有一個maven插件,你可以使用它來簽署APK文件。 https://code.google.com/p/maven-android-plugin/wiki/SigningAPKWithMavenJarsigner
的問題不是如何簽署APK,而是關於如何驗證簽名,**與設備本身上運行的代碼**。 –
,但將比較這些應用程序的SHA1與服務器上的數據庫,其中保存的應用程序wid diff版本的記錄和他們的哈希會好嗎? – Neji
您需要爲每個版本保留獨立的哈希值。 –