Android签名机制介绍:生成keystore、签名、查看签名信息等方法

 更新时间:2015年04月07日 11:29:22   投稿:junjie  
这篇文章主要介绍了Android签名机制介绍:生成keystore、签名、查看签名信息等方法,本文讲解了升级App、权限检查、生成keystore、对apk进行签名、查看签名信息等内容,需要的朋友可以参考下

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>

相关文章

  • Kotlin协程之Flow触发与消费示例解析

    Kotlin协程之Flow触发与消费示例解析

    Kotlin协程中,当需要消费流时,会调用collect方法,触发流的消费,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • Android自定义View实现带音效和震动的SeekBar

    Android自定义View实现带音效和震动的SeekBar

    这篇文章主要为大家详细介绍了Android如何自定义View实一个带音效和震动的SeekBar,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Android Toast自定义显示时间

    Android Toast自定义显示时间

    这篇文章主要为大家详细介绍了Android Toast自定义显示时间,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Flutter加载图片流程MultiFrameImageStreamCompleter解析

    Flutter加载图片流程MultiFrameImageStreamCompleter解析

    这篇文章主要为大家介绍了Flutter加载图片流程MultiFrameImageStreamCompleter示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Android编程实现在adapter中进行数据操作的方法

    Android编程实现在adapter中进行数据操作的方法

    这篇文章主要介绍了Android编程实现在adapter中进行数据操作的方法,结合实例形式分析了Android基于adapter操作数据的相关步骤与实现技巧,需要的朋友可以参考下
    2017-02-02
  • Android App页面滑动标题栏颜色渐变详解

    Android App页面滑动标题栏颜色渐变详解

    这篇文章主要为大家详细介绍了Android App页面滑动标题栏颜色渐变,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Android使用Recyclerview实现图片水平自动循环滚动效果

    Android使用Recyclerview实现图片水平自动循环滚动效果

    这篇文章主要为大家详细介绍了Android使用Recyclerview实现图片水平自动循环滚动效果,实现精彩的跑马灯效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Kotlin中的Checked Exception机制浅析

    Kotlin中的Checked Exception机制浅析

    这篇文章主要给大家介绍了关于Kotlin中Checked Exception机制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Android实现文件存储并读取的示例代码

    Android实现文件存储并读取的示例代码

    本篇文章主要介绍了Android实现文件存储的示例代码,文件内容可以分别存储在手机内存和外存中,并且都可以读去取出来,有兴趣的可以了解一下。
    2017-01-01
  • Android App仿QQ制作Material Design风格沉浸式状态栏

    Android App仿QQ制作Material Design风格沉浸式状态栏

    这篇文章主要介绍了Android App仿QQ制作Material Design风格沉浸式状态栏的实例,同时也给出了4.4版本下实现效果与5.0的对比,需要的朋友可以参考下
    2016-04-04

最新评论