android中怎么實(shí)現(xiàn)打包和簽名,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
在遼源等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需求定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),遼源網(wǎng)站建設(shè)費(fèi)用合理。android打包
以下是原理圖:

由android的項(xiàng)目經(jīng)過(guò)編譯和打包,形成了:
.dex 文件
resources.arsc
uncompiled resources
AndroidManifest.xml
解壓了一個(gè)普通的apk文件,解壓出來(lái)的文件如下:

classes.dex 是.dex文件。resources.arsc是resources resources文件。AndroidManifest.xml是AndroidManifest.xml文件。res是uncompiled resources。META-INF是簽名文件夾。
其中resources.arsc相等于是資源文件的索引,方便查找資源文件
具體打包流程圖:

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

下面分析一下3個(gè)文件的具體如何生成的apksinger:
1、MANIFEST.MF
逐一遍歷里面的所有條目,如果是目錄或者三個(gè)文件(MANIFEST.MF,CERT.RSA,CERT.SF)就跳過(guò),如果是一個(gè)文件,就用SHA1(或者SHA256)消息摘要算法提取出該文件的摘要然后進(jìn)行BASE64編碼后,作為“SHA1-Digest”屬性的值寫入到MANIFEST.MF文件中的一個(gè)塊中。該塊有一個(gè)“Name”屬性,其值就是該文件在apk包中的路徑。
2、CERT.SF:
1》計(jì)算這個(gè)MANIFEST.MF文件的整體SHA1值,再經(jīng)過(guò)BASE64編碼后,記錄在CERT.SF主屬性塊(在文件頭上)的“SHA1-Digest-Manifest”屬性值值下
2》逐條計(jì)算MANIFEST.MF文件中每一個(gè)塊的SHA1,并經(jīng)過(guò)BASE64編碼后,記錄在CERT.SF中的同名塊中,屬性的名字是“SHA1-Digest
3、CERT.RSA
這里會(huì)把之前生成的 CERT.SF文件, 用私鑰計(jì)算出簽名, 然后將簽名以及包含公鑰信息的數(shù)字證書(shū)一同寫入 CERT.RSA 中保存。CERT.RSA是一個(gè)滿足PKCS7格式的文件。
為何要這么來(lái)簽名
上面我們就介紹了簽名apk之后的三個(gè)文件的詳細(xì)內(nèi)容,那么下面來(lái)總結(jié)一下,Android中為何要用這種方式進(jìn)行加密簽名,這種方加密是不是最安全的呢?下面我們來(lái)分析一下,如果apk文件被篡改后會(huì)發(fā)生什么。
首先,如果你改變了apk包中的任何文件,那么在apk安裝校驗(yàn)時(shí),改變后的文件摘要信息與MANIFEST.MF的檢驗(yàn)信息不同,于是驗(yàn)證失敗,程序就不能成功安裝。
其次,如果你對(duì)更改的過(guò)的文件相應(yīng)的算出新的摘要值,然后更改MANIFEST.MF文件里面對(duì)應(yīng)的屬性值,那么必定與CERT.SF文件中算出的摘要值不一樣,照樣驗(yàn)證失敗。
最后,如果你還不死心,繼續(xù)計(jì)算MANIFEST.MF的摘要值,相應(yīng)的更改CERT.SF里面的值,那么數(shù)字簽名值必定與CERT.RSA文件中記錄的不一樣,還是失敗。
那么能不能繼續(xù)偽造數(shù)字簽名呢?不可能,因?yàn)闆](méi)有數(shù)字證書(shū)對(duì)應(yīng)的私鑰。
所以,如果要重新打包后的應(yīng)用程序能再Android設(shè)備上安裝,必須對(duì)其進(jìn)行重簽名。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
網(wǎng)站標(biāo)題:android中怎么實(shí)現(xiàn)打包和簽名-創(chuàng)新互聯(lián)
當(dāng)前地址:http://chinadenli.net/article20/dhcjjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、用戶體驗(yàn)、響應(yīng)式網(wǎng)站、微信公眾號(hào)、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容