Android签名机制介绍:生成keystore、签名、查看签名信息等方法
作者:junjie 时间:2021-05-25 17:52:24
Android独有的安全机制,除了权限机制外,另外一个就是签名机制了。签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查。
升级App
用户在升级一款已经安装过的App时,如果程序的修改来自于同一来源,则允许升级安装,否则会提示签名不一致无法安装的提示。
权限检查
我曾在Android Permission权限机制的具体使用一文中提过,对于申请权限的 protection level 为 signature 或者 signatureOrSystem 的,会检查权限申请者和权限声明者的证书是否是一致的。
至于签名机制的原理及其他作用,此不详述,本文主要介绍,签名文件key的生成、用key去签名apk文件及查看签名的方法。
生成keystore
创建keystore,需要用到keytool.exe (位于jdk_xx\jre\bin目录下),具体做法如下:
keytool -genkey -alias mykey -keyalg RSA -validity 40000 -keystore demo.keystore
#说明:
# -genkey 产生密钥
# -alias mykey 别名 mykey
# -keyalg RSA 使用RSA算法对签名加密
# -validity 40000 有效期限4000天
# -keystore demo.keystore
对apk进行签名
使用产生的keystore对apk签名,使用到的是jarsigner.exe ,该工具位于jdk_xx\bin目录下,命令如下:
jarsigner -verbose -keystore demo.keystore -signedjar test_signed.apk test.apk mykey
# test_signed.apk是签名之后的文件
# test.apk是需要签名的文件
另外需要注意的是,如果你的jdk版本在1.7以上,你在对apk签名时,需要加上这个参数:
-digestalg SHA1 -sigalg MD5withRSA
否则同样会出现:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]的错误。
查看签名信息
1、查看keystore的信息
keytool -list -keystore demo.keystore -alias mykey -v
2、查看keystore的公钥证书信息
keytool -list -keystore demo.keystore -alias mykey -rfc
(注:获取Base64格式的公钥证书,RFC 1421)
3、查看apk的签名信息
jarsigner -verify -verbose -certs <your_apk_path.apk>
标签:Android,签名机制,keystore,签名,查看签名
0
投稿
猜你喜欢
基于SpringBoot实现图片上传及图片回显
2023-01-17 06:26:15
Android中AOP的应用实践之过滤重复点击
2022-09-19 22:01:02
.net实现序列化与反序列化实例解析
2022-08-05 06:42:08
Java利用数组随机抽取幸运观众如何实现
2022-03-20 11:51:02
android压力测试命令monkey详解
2023-06-17 00:36:29
C# ManualResetEvent用法详解
2021-06-11 09:37:14
解决Spring Security中AuthenticationEntryPoint不生效相关问题
2022-11-29 06:53:09
Java 实现订单未支付超时自动取消功能(京东商城为例)
2023-04-20 17:08:06
JAVA遍历一个文件夹中的所有文件的小例子
2023-04-07 17:13:49
一文详解C#中重写(override)及覆盖(new)的区别
2021-07-17 02:36:32
c# 成员类型访问权限低于字段本身的实现
2021-12-23 07:08:27
为什么不建议使用Java自定义Object作为HashMap的key
2021-09-21 06:15:05
C#基于socket模拟http请求的方法
2022-09-12 09:55:11
Java 判断一个时间是否在另一个时间段内
2023-02-24 18:44:25
解决JAVA遍历List集合,删除数据时出现的问题
2021-12-25 15:38:03
Java利用POI读取、写入Excel的方法指南
2023-11-23 15:39:23
Python和Java的语法对比分析语法简洁上python的确完美胜出
2023-08-10 17:06:54
用c#获得当前用户的Application Data文件夹位置
2022-02-13 10:05:22
Java Swing中JDialog实现用户登陆UI示例
2021-10-12 13:58:00
Java基础详解之内存泄漏
2022-04-14 03:45:46