Fedora-ARM
全部博文(241)
分类: LINUX
2011-01-02 21:23:53
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 正确吗?
[否]: 是
输入的主密码
(如果和 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刷机包签名!