裝載請標明出處,維權必究:https://www.cnblogs.com/tangZH/p/12040927.html
更多精美文章: http://77blogs.com/?p=274
首先我們在as中雙擊apk,出現apk的分析界面,然后選中保存簽名相關檔案的檔案夾:

一:簽名檔案:
1、MANIFEST.MF:保存了所有其他檔案的SHA-1并base64編碼后的值
2、CERT.SF:
SHA1-Digest-Manifest的值,這個值就是MANIFEST.MF檔案的SHA-1并base64編碼后的值,
后面幾項的值是對MANIFEST.MF檔案中的每項再次SHA1并base64編碼后的值,
將上一個檔案的某一項取出,比如:
Name: assets/BookCategoryConfig
SHA1-Digest: u5YLUiucukHRhO/xAqnzbnCb6cU=
加兩個\r\n,保存檔案,再SHA1并base64編碼便可得到,
3、CERT.RSA:
包含了公鑰資訊和發布機構資訊,它把之前生成的 CERT.SF檔案, 用私鑰計算出簽名, 然后將簽名以及包含公鑰資訊的數字證書一同寫入 CERT.RSA 中保存,CERT.RSA是一個滿足PKCS7格式的檔案,
Name”屬性,其值就是該檔案在apk包中的路徑,
二、簽名程序
CERT.RSA檔案生成:
它會把前面生成的 CERT.SF檔案用私鑰計算出簽名, 然后將簽名以及包含公鑰資訊的數字證書一同寫入 CERT.RSA 中保存,CERT.RSA是一個滿足PKCS7格式的檔案,
三、APK安裝校驗程序
1、通過在CERT.RSA檔案中記錄的簽名資訊,驗證了CERT.SF沒有被篡改過
RSA是一種非對稱加密演算法,用私鑰通過RSA演算法對摘要資訊進行加密,在安裝時只能使用公鑰才能解密它,解密之后,將它與未加密的摘要資訊進行對比,如果相符,則表明內容沒有被例外修改,
2、通過CERT.SF檔案中記錄的摘要值,驗證了MANIFEST.MF沒有被修改過
3、apk內檔案的摘要值要與MANIFEST.MF檔案中記錄的一致
這里簡單介紹下SHA1數字簽名,簡單地說,它就是一種安全哈希演算法,類似于MD5演算法,它把任意長度的輸入,通過散列演算法變成固定長度的輸出(這里我們稱作“摘要資訊”),你不能僅通過這個摘要資訊復原原來的資訊,另外,它保證不同資訊的摘要資訊彼此不同,因此,如果你改變了apk包中的檔案,那么在apk安裝校驗時,改變后的檔案摘要資訊與MANIFEST.MF的檢驗資訊不同,于是程式就不能成功安裝,
1、 Android簽名機制其實是對APK包完整性和發布機構唯一性的一種校驗機制,
2、 Android簽名機制不能阻止APK包被修改,但修改后的再簽名無法與原先的簽名保持一致,(擁有私鑰的情況除外),
3、 APK包加密的公鑰就打包在APK包內,且不同的私鑰對應不同的公鑰,換句話言之,不同的私鑰簽名的APK公鑰也必不相同,所以我們可以根據公鑰的對比,來判斷私鑰是否一致,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/45666.html
標籤:Android
上一篇:軟鍵盤無法把內容頂出螢屏外
