91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android中怎么實現打包和簽名

發布時間:2021-07-12 11:42:25 來源:億速云 閱讀:105 作者:Leah 欄目:移動開發

android中怎么實現打包和簽名,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

android打包

以下是原理圖:

android中怎么實現打包和簽名

由android的項目經過編譯和打包,形成了:

.dex 文件

resources.arsc

uncompiled resources

AndroidManifest.xml

解壓了一個普通的apk文件,解壓出來的文件如下:

android中怎么實現打包和簽名

classes.dex 是.dex文件。resources.arsc是resources resources文件。AndroidManifest.xml是AndroidManifest.xml文件。res是uncompiled resources。META-INF是簽名文件夾。

其中resources.arsc相等于是資源文件的索引,方便查找資源文件

具體打包流程圖:

android中怎么實現打包和簽名

android簽名

android簽名后文件中多了個META-INF其中有三個文件:

android中怎么實現打包和簽名

下面分析一下3個文件的具體如何生成的apksinger:

1、MANIFEST.MF

逐一遍歷里面的所有條目,如果是目錄或者三個文件(MANIFEST.MF,CERT.RSA,CERT.SF)就跳過,如果是一個文件,就用SHA1(或者SHA256)消息摘要算法提取出該文件的摘要然后進行BASE64編碼后,作為“SHA1-Digest”屬性的值寫入到MANIFEST.MF文件中的一個塊中。該塊有一個“Name”屬性,其值就是該文件在apk包中的路徑。

2、CERT.SF:

1》計算這個MANIFEST.MF文件的整體SHA1值,再經過BASE64編碼后,記錄在CERT.SF主屬性塊(在文件頭上)的“SHA1-Digest-Manifest”屬性值值下

2》逐條計算MANIFEST.MF文件中每一個塊的SHA1,并經過BASE64編碼后,記錄在CERT.SF中的同名塊中,屬性的名字是“SHA1-Digest

3、CERT.RSA

這里會把之前生成的 CERT.SF文件, 用私鑰計算出簽名, 然后將簽名以及包含公鑰信息的數字證書一同寫入 CERT.RSA 中保存。CERT.RSA是一個滿足PKCS7格式的文件。

為何要這么來簽名

上面我們就介紹了簽名apk之后的三個文件的詳細內容,那么下面來總結一下,Android中為何要用這種方式進行加密簽名,這種方加密是不是最安全的呢?下面我們來分析一下,如果apk文件被篡改后會發生什么。

首先,如果你改變了apk包中的任何文件,那么在apk安裝校驗時,改變后的文件摘要信息與MANIFEST.MF的檢驗信息不同,于是驗證失敗,程序就不能成功安裝。

其次,如果你對更改的過的文件相應的算出新的摘要值,然后更改MANIFEST.MF文件里面對應的屬性值,那么必定與CERT.SF文件中算出的摘要值不一樣,照樣驗證失敗。

最后,如果你還不死心,繼續計算MANIFEST.MF的摘要值,相應的更改CERT.SF里面的值,那么數字簽名值必定與CERT.RSA文件中記錄的不一樣,還是失敗。

那么能不能繼續偽造數字簽名呢?不可能,因為沒有數字證書對應的私鑰。

所以,如果要重新打包后的應用程序能再Android設備上安裝,必須對其進行重簽名。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潞西市| 澄迈县| 信丰县| 垣曲县| 寻乌县| 南江县| 上杭县| 云浮市| 略阳县| 泉州市| 荣昌县| 隆安县| 章丘市| 漳州市| 剑川县| 封丘县| 繁昌县| 大同市| 长兴县| 洪洞县| 岗巴县| 黑水县| 武夷山市| 高州市| 西乌珠穆沁旗| 静安区| 松阳县| 花莲县| 保康县| 韶关市| 龙州县| 万山特区| 新巴尔虎右旗| 托克逊县| 义马市| 鄂尔多斯市| 灵山县| 会东县| 益阳市| 巫溪县| 济宁市|