一、数字签名概述

所谓"数字签名"就是通过某种password运算生成一系列符号及代码组成电子password进行签名,来取代书写签名或印章。

数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的。由于别人假冒不了发送方的签名。

二是数字签名能确

定消息的完整性。

由于数字签名的特点是它代表了文件的特征。文件假设发生改变,数字签名的值也将发生变化。

二、Android系统中数字签名的使用范围
眼下在android系统中,在两个地方使用了数据签名,一是应用程序。二是OTA升级。
应用程序中使用数字签名主要用来标识程序的唯一性。OTA升级中使用数字签名主要用来验证数据的完整性。

三、生成数字签名的方法
1、用Java中的数字签名工具keytool
签名首先要有一个keystore文件。keystore是由jdk自带的工具keytool产生。
window上生成的详细方式例如以下:
開始-〉执行->cmd->cd到你安装的jdk下的bin文件夹下, 然后输入
keytool -genkey -alias test.keystore -keyalg RSA -validity 10000 -keystore test.keystore
然后按回车首先提示输入password。 然后会确认你的password。之后会依次叫你输入相关信息如姓名,组织单位等之后就是输入
test.keystore 主password(如果和keystorepassword同样。按回车)我在这里设和keystore同样,之后你就会在bin文件夹下找到生成
的test.keystore。
相关參数意义例如以下:
-alias 后跟的是别名, 这里是test.keystore
-keyalg是加密方式这里是RSA
-validity是有效期这里是10000天
-keystore就是要生成的keystore的名称,这里是test.keystore
keystore生成后。如今能够进行签名了, 如今把你要进行签名的apk放到一个当前文件夹下。然后利用jdk提供的工具
jarsigner.exe进行签名,详细操作例如以下:
jarsigner -verbose -keystore test.keystore -signedjar new.apk test.apk test.keystore
2、在源代码下进行签名
Android源代码文件夹development\tools下有make_key脚本,  用来生成一个密钥对。 这个密钥对与keytool生成的key在形式上不
一样,但内容和作用是一致的。

生成公钥:
openssl genrsa -3 -outtestkey.pem 2048
转换成X509证书格式:
openssl req -new -x509 -key testkey.pem -out testkey.x509.pem -days 10000-subj ‘xx’
生成私钥:
openssl pkcs8 -in testkey.pem-topk8 -outform DER -out testkey.pk8 –nocrypt

APK签名命令:

java -jar signapk publickey.x509[.pem]privatekey.pk8 input.apk output.apk
升级包进行签名: (注:理论上用keytool应该也能对升级包进行签名。但眼下我还不知道详细步骤)
java -jar signapk –w publickey.x509[.pem]privatekey.pk8 input.zip output.zip

Android数字签名解析(一)的更多相关文章

  1. Android数字签名解析(三)

    在刚才開始学习android数字签名的相关知识点的时候,被资料中出现的keystore.x509.密钥对.debug.keystore弄的晕头 转向.经过一段时间的了解,总算明确一些. 一.make_ ...

  2. Android数字签名解析(二)

    在Android数字签名解析(一)中,介绍了android进行签名的两种方式,当中用密钥对进行签名用到了signapk.jar这个java库. 以下我们就看看signapk签名实现过程,signapk ...

  3. Android数字签名

    描述你对Android数字签名的理解? 数字签名就是为程序打上一个标记来作为自己的标识,是Android系统要求的,若一个Android程序没有经过数字签名,没办法安装到系统: 签名也是对apk的一种 ...

  4. android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  5. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  6. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  7. android XMl 解析神奇xstream 三: 把复杂对象转换成 xml

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  8. android XMl 解析神奇xstream 二: 把对象转换成xml

    前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...

  9. Android动画解析--XML

    动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面 ...

随机推荐

  1. C++指针传递和引用传递的区别 (转载整理)

    区别1:指针传递和引用传递是以不同的方式实现相同的效果,但是指针传递的本质还是值传递,只是传递的值是地址. 就拿 交换两个数的函数来举例: // 指针传递 void swap(int * val1, ...

  2. cmake指令详解

    所需文件名:CmakeLists.txt,在需要操作的每个目录下都需要 PROJECT(工程名字)     这条指令会自动创建两个变量: <projectname>_BINARY_DIR( ...

  3. TOJ 4523 Transportation

    Description Given N stations, you want to carry goods from station 1 to station N. Among these stati ...

  4. (转)Unity 之 UGUI 小总结

    转自:http://www.jianshu.com/p/5b6f5022662e 开发过程中对UGUI的一个小总结. 首先从原画师拿到效果图,美术切图,拿到碎图后打成大图. 我们先来说一下图:RGBA ...

  5. mavne 工程jsp页面首行报错

    在pom.xml文件中加入servlet依赖 <dependency> <groupId>javax.servlet</groupId> <artifactI ...

  6. UML建模—EA的使用起步

    Enterprise Architect(EA) 是一个功能比较强悍的建模工具. 对于一个软件设计者来说,从需求分析到业务设计.类模型设计.数据库设计到测试.发布.部署等一系列软件设计必须的操作都可以 ...

  7. javaEE环境搭建-eclipse

    1.       javaEE环境搭建: (1)     JDK1.8 (2)     eclipse-JavaEE (3)     tomcat-7.0.90 下载地址: https://tomca ...

  8. MarkDown 语言简单使用

    # Markdown file ![alt img is error](http://cdn2.jianshu.io/assets/web/logo-58fd04f6f0de908401aa561cd ...

  9. XHR的应用场景

    一.简史 IE5.5最早实现XHR,需要通过ActiveXObject创建xhr实例,直到IE7才定义了XMLHttpRequest对象.IE5.5实现XHR之后,其他浏览器紧随其后实现了XHR,直接 ...

  10. H5插入视频兼容主浏览器

    插入视频的方法有很多种,但是有一些方法不兼容. 方法1:DW插入视频利用DW插入的视频为flv格式,操作较简单,但是代码复杂,需要浏览器支持flash插件:火狐浏览器需要手动下载flash插件,比较麻 ...