Android数字签名解析(一)
一、数字签名概述
所谓"数字签名"就是通过某种password运算生成一系列符号及代码组成电子password进行签名,来取代书写签名或印章。
数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的。由于别人假冒不了发送方的签名。二是数字签名能确
定消息的完整性。由于数字签名的特点是它代表了文件的特征。文件假设发生改变,数字签名的值也将发生变化。
眼下在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 –nocryptAPK签名命令:
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数字签名解析(一)的更多相关文章
- Android数字签名解析(三)
在刚才開始学习android数字签名的相关知识点的时候,被资料中出现的keystore.x509.密钥对.debug.keystore弄的晕头 转向.经过一段时间的了解,总算明确一些. 一.make_ ...
- Android数字签名解析(二)
在Android数字签名解析(一)中,介绍了android进行签名的两种方式,当中用密钥对进行签名用到了signapk.jar这个java库. 以下我们就看看signapk签名实现过程,signapk ...
- Android数字签名
描述你对Android数字签名的理解? 数字签名就是为程序打上一个标记来作为自己的标识,是Android系统要求的,若一个Android程序没有经过数字签名,没办法安装到系统: 签名也是对apk的一种 ...
- android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 三: 把复杂对象转换成 xml
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 二: 把对象转换成xml
前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...
- Android动画解析--XML
动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面 ...
随机推荐
- ibaits数组形式批量入库
一.xml层 <!--批量入库--> <insert id="addSecCodeList" parameterClass="java.util.Has ...
- AutoFac之 Named and Keyed 方式注入
AutoFac是.net framework下一个高效的ioc容器,传说中的效率最快(我偷偷看了几篇测试博文,确实这个容器的效率遥遥领先). 好了废话不多说,AutoFac的使用方式请看:http:/ ...
- 阿冰教你一步一步做Android新闻客户端(二)两种异步线程加载图片的方法
哈哈哈抱着没人看的心态随便写,直接上代码,各位看官看注释 一种Thread 一种AsyncTask 先不说用框架 public class ImageLoader { private ImageVi ...
- GridView, ListView 区别
ListView, GridView部分的类层次结构 AbsListView的xml属性 android:listSelector 当前item高亮时,显示的drawable android:draw ...
- SpringBoot | 第三十一章:MongoDB的集成和使用
前言 上一章节,简单讲解了如何集成Spring-data-jpa.本章节,我们来看看如何集成NoSQL的Mongodb.mongodb是最早热门非关系数据库的之一,使用也比较普遍.最适合来存储一些非结 ...
- Cookie的应用实例
ASP.NET设置元素CSS属性 1.添加一条CSS规则: control.style.add("CSS名称",“CSS值”); 2.添加Class规则 Control.CSSCl ...
- 08.StreamReader和StreamWrite的学习
StreamReader和StreamWrite是用来操作字符的 namespace _21.对StreamReader和StreamWriter的学习 { class Program { stati ...
- oracle 常用操作记录--持续更新...
一.oracle grant 授权语句(转自:https://www.cnblogs.com/yt954437595/p/6488819.html) --select * from dba_users ...
- H5插入视频兼容主浏览器
插入视频的方法有很多种,但是有一些方法不兼容. 方法1:DW插入视频利用DW插入的视频为flv格式,操作较简单,但是代码复杂,需要浏览器支持flash插件:火狐浏览器需要手动下载flash插件,比较麻 ...
- PHP环境配置解释
PHP中注释:#,//,/* */ 一.修改Apache配置 DocumentRoot "G:\PHP" //修改完需要重启Apache //以下二选一 ----- ...