博客
关于我
Android APK 签名比对(转)
阅读量:425 次
发布时间:2019-03-06

本文共 804 字,大约阅读时间需要 2 分钟。

Android APK签名过程的详细解析

在移动开发领域,Android应用程序的签名机制是保障应用程序完整性和发布机构唯一性的重要手段。本文将详细介绍Android APK签名的过程,并探讨其应用场景。

一、APK签名的核心流程

  • MANIFEST.MF文件的生成
  • MANIFEST.MF文件是APK签名的重要组成部分,其生成过程旨在为每个文件条目生成SHA1数字签名。具体步骤如下:

    • 遍历APK包中的所有文件条目。
    • 对于非文件夹且非特定签名文件,逐个读取文件内容,计算其SHA1哈希值。
    • 使用Base64编码生成签名信息,并将其写入MANIFEST.MF文件。
    1. CERT.SF文件的生成
    2. CERT.SF文件是对MANIFEST.MF文件的签名,使用SHA1-RSA算法:

      • 使用私钥对MANIFEST.MF的摘要信息进行签名。
      • 将签名写入CERT.SF文件中。
      1. CERT.RSA文件的生成
      2. CERT.RSA文件包含签名所用的公钥信息:

        • 将公钥信息与签名证书关联,生成CERT.RSA文件。

        二、APK签名比对的实现方式

        通过对比APK包中的签名证书,可以验证APK的发布机构。Android系统内置的PackageParser类用于解析APK包,获取签名信息。

        三、APK签名比对的应用场景

      3. 程序自检测
      4. APK运行时可进行自检,将签名比对结果存储在本地或云端。适用于提高用户信任度的场景,需注意防止恶意破坏。

        1. 第三方检测
        2. 可靠的第三方检测服务负责APK签名比对,适用于杀毒软件和应用市场。该模式依赖网络环境,确保数据的安全性。

          1. 系统限定安装
          2. 通过系统设置,限定只能安装签名通过的APK,适用于企业级设备管理,提升安全性但增大了系统封闭性。

            结语

            APK签名机制为Android应用提供了完整性校验,虽然不能完全防止修改,但通过比对公钥信息可识别发布机构。结合自检、第三方检测和系统管理,可有效提升应用安全性。

    转载地址:http://nhpuz.baihongyu.com/

    你可能感兴趣的文章
    Openlayers实战:绘制矩形,正方形,正六边形
    查看>>
    Openlayers实战:自定义放大缩小,显示zoom等级
    查看>>
    Openlayers实战:自定义版权属性信息
    查看>>
    Openlayers实战:输入WKT数据,输出GML、Polyline、GeoJSON格式数据
    查看>>
    Openlayers实战:选择feature,列表滑动,定位到相应的列表位置
    查看>>
    Openlayers实战:非4326,3857的投影
    查看>>
    Openlayers高级交互(1/20): 控制功能综合展示(版权、坐标显示、放缩、比例尺、测量等)
    查看>>
    Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
    查看>>
    Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
    查看>>
    Openlayers高级交互(12/20):利用高德逆地理编码,点击位置,显示坐标和地址
    查看>>
    Openlayers高级交互(13/20):选择左右两部分的地图内容,横向卷帘
    查看>>
    Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
    查看>>
    Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
    查看>>
    Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
    查看>>
    Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
    查看>>
    Openlayers高级交互(18/20):根据feature,将图形适配到最可视化窗口
    查看>>
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>
    Openlayers高级交互(2/20):清除所有图层的有效方法
    查看>>
    Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    查看>>