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
正在签名: ............
原文地址:http://blog.youkuaiyun.com/tekkamanitachi/archive/2009/07/12/4342994.aspx