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刷机包签名!

更多相关文章

  1. Android性能测试 一些适用于Android Studio的代码审查和性能测试
  2. 实现Android播放声音资源的一个简单的工具类
  3. Android的界面设计工具——DroidDraw
  4. Android程序版本控制工具类
  5. Android aapt 工具介绍
  6. Android JNI开发工具篇(1)-开发环境搭建
  7. android工具之TraceView学习笔记

随机推荐

  1. Android: Listen outgoing/incoming call
  2. Android(安卓)studio build inished with
  3. android intent——小白入口
  4. EditText设置不自动获取焦点,点击后才获取
  5. Android挂断电话流程
  6. android ProgressBar 的使用
  7. android拍照造成内存泄露问题
  8. 点击button然后改变其中文字的颜色
  9. Android(安卓)原生加载框
  10. Android应用程序键盘(Keyboard)消息处理机