Android簽名機(jī)制介紹:生成keystore、簽名、查看簽名信息等方法
Android獨(dú)有的安全機(jī)制,除了權(quán)限機(jī)制外,另外一個(gè)就是簽名機(jī)制了。簽名機(jī)制主要用在以下兩個(gè)主要場合起到其作用:升級App和權(quán)限檢查。
升級App
用戶在升級一款已經(jīng)安裝過的App時(shí),如果程序的修改來自于同一來源,則允許升級安裝,否則會(huì)提示簽名不一致無法安裝的提示。
權(quán)限檢查
我曾在Android Permission權(quán)限機(jī)制的具體使用一文中提過,對于申請權(quán)限的 protection level 為 signature 或者 signatureOrSystem 的,會(huì)檢查權(quán)限申請者和權(quán)限聲明者的證書是否是一致的。
至于簽名機(jī)制的原理及其他作用,此不詳述,本文主要介紹,簽名文件key的生成、用key去簽名apk文件及查看簽名的方法。
生成keystore
創(chuàng)建keystore,需要用到keytool.exe (位于jdk_xx\jre\bin目錄下),具體做法如下:
keytool -genkey -alias mykey -keyalg RSA -validity 40000 -keystore demo.keystore
#說明:
# -genkey 產(chǎn)生密鑰
# -alias mykey 別名 mykey
# -keyalg RSA 使用RSA算法對簽名加密
# -validity 40000 有效期限4000天
# -keystore demo.keystore
對apk進(jìn)行簽名
使用產(chǎn)生的keystore對apk簽名,使用到的是jarsigner.exe ,該工具位于jdk_xx\bin目錄下,命令如下:
jarsigner -verbose -keystore demo.keystore -signedjar test_signed.apk test.apk mykey
# test_signed.apk是簽名之后的文件
# test.apk是需要簽名的文件
另外需要注意的是,如果你的jdk版本在1.7以上,你在對apk簽名時(shí),需要加上這個(gè)參數(shù):
-digestalg SHA1 -sigalg MD5withRSA
否則同樣會(huì)出現(xiàn):Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]的錯(cuò)誤。
查看簽名信息
1、查看keystore的信息
keytool -list -keystore demo.keystore -alias mykey -v
2、查看keystore的公鑰證書信息
keytool -list -keystore demo.keystore -alias mykey -rfc
(注:獲取Base64格式的公鑰證書,RFC 1421)
3、查看apk的簽名信息
jarsigner -verify -verbose -certs <your_apk_path.apk>
相關(guān)文章
Kotlin協(xié)程之Flow觸發(fā)與消費(fèi)示例解析
Kotlin協(xié)程中,當(dāng)需要消費(fèi)流時(shí),會(huì)調(diào)用collect方法,觸發(fā)流的消費(fèi),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09
Android自定義View實(shí)現(xiàn)帶音效和震動(dòng)的SeekBar
這篇文章主要為大家詳細(xì)介紹了Android如何自定義View實(shí)一個(gè)帶音效和震動(dòng)的SeekBar,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
Flutter加載圖片流程MultiFrameImageStreamCompleter解析
這篇文章主要為大家介紹了Flutter加載圖片流程MultiFrameImageStreamCompleter示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Android編程實(shí)現(xiàn)在adapter中進(jìn)行數(shù)據(jù)操作的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)在adapter中進(jìn)行數(shù)據(jù)操作的方法,結(jié)合實(shí)例形式分析了Android基于adapter操作數(shù)據(jù)的相關(guān)步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02
Android?App頁面滑動(dòng)標(biāo)題欄顏色漸變詳解
這篇文章主要為大家詳細(xì)介紹了Android?App頁面滑動(dòng)標(biāo)題欄顏色漸變,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Android使用Recyclerview實(shí)現(xiàn)圖片水平自動(dòng)循環(huán)滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android使用Recyclerview實(shí)現(xiàn)圖片水平自動(dòng)循環(huán)滾動(dòng)效果,實(shí)現(xiàn)精彩的跑馬燈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Kotlin中的Checked Exception機(jī)制淺析
這篇文章主要給大家介紹了關(guān)于Kotlin中Checked Exception機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Android實(shí)現(xiàn)文件存儲(chǔ)并讀取的示例代碼
本篇文章主要介紹了Android實(shí)現(xiàn)文件存儲(chǔ)的示例代碼,文件內(nèi)容可以分別存儲(chǔ)在手機(jī)內(nèi)存和外存中,并且都可以讀去取出來,有興趣的可以了解一下。2017-01-01
Android App仿QQ制作Material Design風(fēng)格沉浸式狀態(tài)欄
這篇文章主要介紹了Android App仿QQ制作Material Design風(fēng)格沉浸式狀態(tài)欄的實(shí)例,同時(shí)也給出了4.4版本下實(shí)現(xiàn)效果與5.0的對比,需要的朋友可以參考下2016-04-04

