• Android apk签名方法介绍


    还望支持个人博客站:http://www.enjoytoday.cn
    参考博客:http://www.enjoytoday.cn/posts/203

    为什么要签名

    在介绍签名方法之前,首先我们来了解下,android系统为何需要我们签名后才可安装运行apk,其实这个签名和我们生活中的信用卡签名并无本质不同,就是一个对apk身份的验证,对于apk的一种担责行为。apk前面采用加密算法(RSA或DSA)对apk加密验证以确保在apk安装运行之前的文件完整性和未被修改。

    签名前的准备

    签名其实说白了即使对文件进行加密,将整个文件给”锁起来”了。因此, apk前面前需要获取两个文件,一个是android已经编译成功 的apk文件,另一个即使apk的签名文件。当然,签名前你还是需要知道你的签名文件的签名基本参数的:别名和签名密码。所以在签名之前,我们需要做两个最基础的事情:一是编译生成apk文件,二是创建私有签名文件,apk文件编译胡不多赘述,主要来说如何生成一个签名文件。

    签名文件的生成

    签名文件的生成方式主要有两种,一种是工具式的可视化生成,一种是通过命令行方式生成。下面我主要介绍通过命令行方式生成一个前面文件*.jks.

    命令行生成的前提是需要你已经成 功安装配置java运行时环境,生成签名证书使用的是java源码工具下的一个工具keytool,命令格式如下:

    #keytool -genkey -alias keyname -keyalg RSA --validity    20000 -keystore keyname.jks -storepass storepass -keypass keypass

    各个选项的含义如下所示:

      -genkey        : 生成.jks或.keystore文件
      -alias         :签名文件的别名,若需要导入eclipse对应用进行签名则需要设置为 androiddebugkey
      -keyalg        : 加密方式
      -validity      : 有效时间
      -keystore      :  .jks或.keystore文件名
      -storepass     :store仓库密码,若需要导入eclipse对应用进行签名则需要设置为android
      -keypass       :  .jks或.keystore文件的密码

    命令运行后会显示一些需要你输入的信息,包括公司信息、个人地址、个人姓名等相关信息,显示如下:

    这里写图片描述

    最后确认后就会在当前目录生成一个keyname.jks前面文件,如此就完成了一个签名文件的创建过程 。

    开始签名

    命令行签名使用的是java自带工具jarsigner签名工具签名,签名使用使用的命令如下:

    #jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keyname.jks -signedjar. test.tspk  release.apk   keyname

    如此就可成功将test.apk签名成功,输出签名成功后的apk文件release.apk.

    查看签名

    签名后我们可以通过keytool工具对我们的apk进行查看签名信息,结果会输出你签名时填入的相关信息,以及一个生成的sha1和md5值,命令如下:

    #keytool -printcert -jarfile release.apk

    结果显示如下:

    
    签名者 #1:
    
    签名:
    
    所有者: C=US, O=Android, CN=Android Debug
    发布者: C=US, O=Android, CN=Android Debug
    序列号: 1
    有效期开始日期: Sun May 15 02:14:14 CST 2016, 截止日期: Tue May 08 02:14:14 CST 2046
    证书指纹:
         MD5: 7C:79:6B:BD:C5:CE:9C:A5:BB:3F:F2:20:39:6A:A7:B5
         SHA1: 4A:00:08:BE:CC:A6:9A:CE:7D:82:F5:84:C1:31:C6:19:99:12:84:53
         SHA256: A1:36:20:F4:E3:32:9C:32:F7:28:B1:8A:EB:15:42:37:1C:A5:10:47:47:A1:E2:12:AB:29:C5:62:35:05:C4:B3
         签名算法名称: SHA1withRSA
         版本: 1
  • 相关阅读:
    在线教育02
    HashMap如何解决取Value值为Null
    Java+selenium 如何定位下拉框select
    Java+selenium 如何下拉移动滚动条【实战】
    Python创建第一个django应用
    如何在Pycharm中配置Python和Django(环境搭建篇)
    selenium+iframe 如何定位元素(实战)
    Java+Selenium 如何参数化验证Table表格数据
    如何实现一个字符的反转 (Java)
    Feature如何解决参数数量不匹配
  • 原文地址:https://www.cnblogs.com/amiko/p/7906232.html
Copyright © 2020-2023  润新知