Android系統要求所有安裝的應用程式必需有數位簽章。否則系統將不會安裝和運行沒有合適的簽名許可的程式。無論是在裝置還是模擬器上都必須給你的程式建立簽名才可以調試運。這是所有Android開發人員都懂得的道理。但是什麼是數位簽章,其中的原理是什麼呢?我並不瞭解。所有趁有空,查了查相關的知識。
在介紹Android,我們要瞭解密碼學的基本知識:加密。請看對加密技術的一點總結(1)
而在Gphone上的數位簽章不僅存在於所有安裝的應用程式上,在使用updata.zip刷機的時候,刷機包也用到了簽名驗證。
首先看看apk是如何進行簽名:
(1)必備工具:Sun官方網站下載JDK,安裝後產生的keytool和jarsigne兩個系統工具。
而對於兩個工具和keystore的介紹請看:jdk工具keytool和jarsigner協助Part1(jdk keytool&jarsigner tool manual)
和 jdk工具keytool和jarsigner協助Part2(jdk keytool&jarsigner tool manual)
這兩篇講得非常的透徹,感謝NCNC
(2)產生keystore
$keytool -genkey -alias tekkaman.keystore -keyalg
RSA -validity 20000 -keystore tekkaman.keystore
輸入keystore密碼:
再次輸入新密碼:
您的名字與姓氏是什嗎?
[Unknown]: tekkaman
您的組織單位名稱是什嗎?
[Unknown]: NERV
您的組織名稱是什嗎?
[Unknown]: NERV
您所在的城市或地區名稱是什嗎?
[Unknown]: Linux
您所在的州或省份名稱是什嗎?
[Unknown]: GNU
該單位的兩字母國家代碼是什麼
[Unknown]: CN
CN=tekkaman, OU=NERV, O=NERV, L=Linux, ST=GNU, C=CN 正確嗎?
[否]: 是
輸入<tekkaman.keystore>的主密碼
(如果和 keystore 密碼相同,按斷行符號):
(3)使用你產生的keystore對apk包簽名
$jarsigner -verbose -keystore tekkaman.keystore -
signedjar tekkaman_signed.apk tekkaman.apk tekkaman.keystore
輸入密鑰庫的口令短語:
正在添加: META-INF/TEKKAMAN.SF
正在添加: META-INF/TEKKAMAN.RSA
正在簽名: ......
......
下次介紹如何產生自己的加密檔案,並使用這些檔案對updata.zip刷機包簽名!