首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android从哪里获得验证APK签名的公钥?

Android从APK文件的META-INF目录中的CERT.RSA文件中获取验证APK签名的公钥。在APK签名过程中,开发者使用私钥对APK进行签名,生成CERT.RSA文件。验证APK签名时,Android系统会提取CERT.RSA文件中的公钥,并与APK中的签名进行比对,以确保APK的完整性和真实性。

APK签名的公钥获取方式如下:

  1. 使用Java的KeyStore工具,通过以下命令提取公钥: keytool -printcert -file CERT.RSA
  2. 使用Android Studio进行验证:
    • 打开APK文件,将其重命名为.zip格式,解压缩。
    • 在解压缩后的文件夹中,进入META-INF目录,找到CERT.RSA文件。
    • 在终端或命令提示符中,使用以下命令提取公钥: keytool -printcert -file CERT.RSA

验证APK签名的公钥对于确保APK的安全性和防止篡改非常重要。开发者可以使用公钥验证库来验证APK签名,以确保APK来自可信的源,并且没有被篡改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈程序的数字签名

一段数字签名数字串,它包含电子文件经过Hash编码后产生的数字摘要,即一个Hash函数值以及发送者的公钥和私钥三部分内容。...摘要算法中又涉及到对称加密和非对加密 对称加密就是在加密和解密过程中需要使用同一个密钥 非对称加密使用公钥/私钥中的公钥来加密明文,然后使用对应的私钥来解密密文。...Window签名的RSA算法:通过公钥与私钥来判断私钥的合法。 公钥与私钥具有对称性,既可以通过私钥加密,公钥解密,以此来论证私钥持有者的合法身份。...由于在交换公钥时免不了遭遇中间人劫持,因此window程序的签名证书,都需要第三方权威机构的认证,并不像android程序一样开发者可以对自己程序签发证书。...数字签名的验证过程本质: 1、通过对要验证的软件创建hash数据; 2、使用发布者的公共密匙来解密被加密的hash数据; 3、最后比较解密的hash和新获得的hash,如果匹配说明签名是正确的,软件没有被修改过

1.7K31

Android APK 签名原理

Android APK 签名原理涉及到密码学的加密算法、数字签名、数字证书等基础知识,这里做个总结记录。...使用私钥,对这个摘要加密,生成数字签名。 将原始信息和数字签名一并发给接收者。 接收者在收到信息后通过如下两步验证消息来源的真伪。...Android APK 签名流程 为了防止 APK 在传送的过程中被第三方篡改,Google 引入了签名机制。...2、APK 作者身份唯一性校验 当在 Android 设备上安装 APK 包时,会从存放在 CERT.RSA 中的公钥证书中提取公钥,进行 RSA 解密来校验安装包的身份。...使用不同的 key 生成的签名信息会不同,不同的私钥对应不同的公钥,因此最大的区别是签名证书中存放的公钥会不同,所以我们可以通过提取 CERT.RSA 中的公钥来检查安装包是否被重新签名了。

3.4K30
  • android签名原理

    CERT.RSA(签名结果文件):其中包含了公钥、加密算法等信息。首先对前一步生成的MANIFEST.MF使用了SHA256(SHA1)-RSA算法,用开发者私钥签名,然后在安装时使用公钥解密。...校验过程: 1、首先用同样的Hash算法从接收到的数据中提取出摘要。 2、解密签名:使用发送方的公钥对数字签名进行解密,解密出原始摘要。...(非对称算法,如RSA) 公钥等 接收方收到消息后,先向CA验证证书的合法性,再进行签名校验。...Android在安装Apk时并没有校验证书本身的合法性,只是从证书中提取公钥和加密算法,这也正是对第三方Apk重新签名后,还能够继续在没有安装这个Apk的系统中继续安装的原因。...Android Apk V1 签名原理 1、解析出 CERT.RSA 文件中的证书、公钥,解密 CERT.RSA 中的加密数据。

    1.2K20

    Android APK 签名校验

    公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。...数字签名及数字证书 数字证书 1.证书发布机构 2.证书的有效期3 3.消息发送方的公钥 4.证书的所有者 5.数字签名所使用的算法 6.数字签名 APK签名前 APK签名后 META-INF文件夹...中记录的是apk中所有文件的摘要值;CERT.SF中记录的是对MANIFEST.MF的摘要值,包括整个文件的摘要,还有文件中每一项的摘要;而CERT.RSA中记录的是对CERT.SF文件的签名,以及签名的公钥...所以重打包的apk中所带证书的公钥肯定和原始应用不一样。...到这里,apk安装时的签名验证过程都已经分析完了,来总结一下: 所有有关apk文件的签名验证工作都是在JarVerifier里面做的,一共分成三步; JarVeirifer.verifyCertificate

    5.1K10

    Android Keystore漫谈

    公钥(公共钥匙) 加密过程中,算法为了提高其加密程度,传入一个参数,使同一个算法在不同参数的作用下产生不同的加密效果。公钥持有者一般为群体,其作用是验证与加密。...关于私钥、公钥的知识,在此不做过多讲解,引用公钥和私钥中的内容,相信小伙伴们会有点收获。 比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。...其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。 数字签名 实体经私钥加密后得到的数据。...它可以通过公钥来解密,从而将解密后的内容与实体进行比对,来验证信息数据是否被篡改过。关于数字签名更深入的了解,可参考《数字签名是什么?》一文。...默认Keystore的存放位置为$HOME/.android/debug.keystore,若Android Studio打包签名apk的时候未找到默认的Keystore时会自动创建它。

    2.2K10

    Android V1及V2签名签名原理简析

    CERT.RSA 证书(公钥)及签名文件,存储keystore的公钥、发行信息、以及对CERT.SF文件摘要的签名信息(利用keystore的私钥进行加密过) CERT.RSA与CERT.SF是相互对应的...image.png CERT.RSA文件里面存储了证书公钥、过期日期、发行人、加密算法等信息,根据公钥及加密算法,Android系统就能计算出CERT.SF的摘要信息,其严格的格式如下: ?...X.509证书格式 从CERT.RSA中,我们能获的证书的指纹信息,在微信分享、第三方SDK申请的时候经常用到,其实就是公钥+开发者信息的一个签名: ?...而数字签名是什么呢(公钥数字签名),利用非对称加密技术,通过私钥对摘要进行加密,产生一个字符串,这个字符串+公钥证书就可以看做消息的数字签名,如RSA就是常用的非对称加密算法。...image.png APK签名怎么校验 签名校验的过程可以看做签名的逆向,只不过覆盖安装可能还要校验公钥及证书信息一致,否则覆盖安装会失败。

    2.7K40

    【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )

    文章目录 一、APK 文件结构 二、APK 打包流程 三、APK 安装流程 四、安卓虚拟机 一、APK 文件结构 ---- Android 应用的安装包时 以 " .apk " 为后缀的 APK 文件...; APK 是 " Android Package " 的缩写 ; 将打包好的 APK 文件安装到 Android 手机中 , 就是可运行的应用程序 ; APK 文件结构 : ① assets : 资源文件...的签名文件 ; CERT.SF : 摘要加密 , 使用私钥 对 摘要明文 加密后的 密文信息 , 是加密文件 , 如果要解密该文件 , 必须使用与私钥配对的公钥进行解密 ; CERT.RSA : 文件是签名证书文件..., 存放的是公钥和加密算法的描述 ; MANIFEST.MF : 文件摘要 , 存放程序清单文件 , 包含了 APK 安装包 中所有文件的 摘要明文 ; 剩余文件 : 都是可忽略的资源文件 ; ④...apk 文件 ; ⑥ 使用 jarsigner 工具对 apk 文件进行签名 , 生成签名后的文件 ; ⑦ 使用 zipalign 工具对签名后的 apk 文件进行对齐操作 ; 三、APK 安装流程

    1.3K31

    探究 Android 签名机制和原理

    Android 签名机制和原理 Android系统在安装APK的时候,首先会检验APK的签名,如果发现签名文件不存在或者校验签名失败,则会拒绝安装,所以应用程序在发布之前一定要进行签名。...如果改变了APK包中的文件,在apk安装校验时,改变后的文件摘要信息与 MANIFEST.MF 的检验信息不同,程序就不会安装成功。假如攻击者修改了程序的内容,又重新生成了新的摘要,就可以通过验证。...在安装时只能使用公钥才能进行解密。解密之后,与未加密的MANIFEST.MF进行对比,如果相符,则表明内容没有被异常修改。...系统在对程序进行验证的时候,用开发者公钥对不正确的签名文件进行解密,得到的结果和摘要文件对应不起来,导致不能通过检验,不能成功安装文件。...SHA1-Digest: OPQCkzMXJVPQryHeMowVNZmfRMw= CERT.RSA 该文件中保存了公钥、所采用的加密算法等信息。

    3.1K10

    AndroidV1,V2,V3签名原理详解

    一个签名证书文件中,是包含一对公私钥,用私钥对apk进行签名,在安装到android手机时,系统会使用证书中对应签名私钥的公钥来验证,查看apk是否被更改过,如果没有则可以安装在手机上。...一,没有签名的APK无法安装 Android的APK要进行签名才能够安装到手机上,这是因为在安装的时候系统会进行检测,平时我们直接点AS里面那个绿色的运行按钮也能够直接安装到手机上,这是因为其实它也进行了签名...在打包后的apk中会多三个文件: 一.MANIFEST.MF APK当中的所有文件都会列出来用Name表示,除此之外每个文件都有SHA-256签名摘要记录 签名摘要记录:校验码对我们的数据内容进行验证...接下来看最后一个文件CERT.RSA 三.CERT.RSA 在签名的时候会给一个证书,里面有公钥和私钥; 这个RSA文件使用私钥计算SF文件的数字签名+包含公钥的证书信息保存到RSA文件中。...由此也可以得出:偏移量-APK签名分块长度=签名分块从第几个字节开始 偏移量:上面提到过在EOCD格式中存储着 APK签名分块长度:偏移量-16个字节(magic魔数)-8个字节(size of block

    1.1K20

    AndroidV1,V2,V3签名原理详解

    一个签名证书文件中,是包含一对公私钥,用私钥对apk进行签名,在安装到android手机时,系统会使用证书中对应签名私钥的公钥来验证,查看apk是否被更改过,如果没有则可以安装在手机上。...一,没有签名的APK无法安装 Android的APK要进行签名才能够安装到手机上,这是因为在安装的时候系统会进行检测,平时我们直接点AS里面那个绿色的运行按钮也能够直接安装到手机上,这是因为其实它也进行了签名...接下来看最后一个文件CERT.RSA 三.CERT.RSA 在签名的时候会给一个证书,里面有公钥和私钥; ==这个RSA文件使用私钥计算SF文件的数字签名+包含公钥的证书信息保存到RSA文件中。...首先,如果你改变了apk包中的任何文件,那么在apk安装校验时,改变后的文件摘要信息与MANIFEST.MF的检验信息不同,于是验证失败,程序就不能成功安装。...由此也可以得出:偏移量-APK签名分块长度=签名分块从第几个字节开始 偏移量:上面提到过在EOCD格式中存储着 APK签名分块长度:偏移量-16个字节(magic魔数)-8个字节(size of block

    72530

    Android签名攻与防

    Android攻击手段层出不断,目前比较流行的方法就是把签名认证的内容放到动态链接库.so文件中,本文则从JNI签名验证浅谈下Android的攻防问题。 看点 02 二....4.2 证书完整性校验 4.1内容是通过context获取的signature获取的签名验证,我们知道在签名后apk文件会多出以下文件 ?...-in CERT.RSA -print_certs (3)部分一中的公钥等信息就是从部分二中得来的,可以直接在部分二中找到。...4.2.3 RSA加解密实现 由于Android生成的apk文件是以zip文件格式生成的,我们可以查看源码查看Android签名校验机制 可参考:Apk在安装的过程中核心类: frameworks\base...显然不可取(太大) 方案四:通过源码解析我们可以知道,apk文件验证是按照zip文件目录形式查找到.RSA文件结尾,我们可以直接去取文件的绝对路径,拿到证书的公钥信息进行验证(但需要引入PKCS7的库)

    2.3K50

    Android 新一代多渠道打包神器

    想法虽好,但是上面的整个流程,有一个前提,就是数据接收者能够正确拿到发送者的公钥。如果接收者拿到的公钥被篡改了,那么坏人就会被当成好人,而真正的数据发送者发送的数据则会被视作脏数据。...那怎么才能保证公钥的安全性那?这就要靠数字证书来解决了。...接收者拿到数据后,首先会根据CA的公钥,解码出发送者的公钥。然后就与上面的校验流程完全相同了。 所以,数字证书主要解决了公钥的安全发放问题。...、类似SF文件和开发者公钥一起组装成通过单个keystore签名后的v2签名块(第三列第一行)。...然后,如果破坏者使用自己的私钥去加密生成“SF”数据块,那么使用开发者的公钥去解密“SF”数据块中的数字签名就会失败; 最后,更进一步,若破坏者甚至替换了开发者公钥,那么使用数字证书中的公钥校验签名块中的公钥就会失败

    6.4K20

    Android 新一代多渠道打包神器

    想法虽好,但是上面的整个流程,有一个前提,就是数据接收者能够正确拿到发送者的公钥。如果接收者拿到的公钥被篡改了,那么坏人就会被当成好人,而真正的数据发送者发送的数据则会被视作脏数据。...那怎么才能保证公钥的安全性那?这就要靠数字证书来解决了。...接收者拿到数据后,首先会根据CA的公钥,解码出发送者的公钥。然后就与上面的校验流程完全相同了。 所以,数字证书主要解决了公钥的安全发放问题。...、类似SF文件和开发者公钥一起组装成通过单个keystore签名后的v2签名块(第三列第一行)。...然后,如果破坏者使用自己的私钥去加密生成“SF”数据块,那么使用开发者的公钥去解密“SF”数据块中的数字签名就会失败; 最后,更进一步,若破坏者甚至替换了开发者公钥,那么使用数字证书中的公钥校验签名块中的公钥就会失败

    1.2K20

    Android新一代多渠道打包神器

    而数字签名,就是为了解决这两个问题而诞生的。 首先,数据的发送者需要先申请一对公私钥对,并将公钥交给数据接收者。...想法虽好,但是上面的整个流程,有一个前提,就是数据接收者能够正确拿到发送者的公钥。如果接收者拿到的公钥被篡改了,那么坏人就会被当成好人,而真正的数据发送者发送的数据则会被视作脏数据。...那怎么才能保证公钥的安全性那?这就要靠数字证书来解决了。...接收者拿到数据后,首先会根据CA的公钥,解码出发送者的公钥。然后就与上面的校验流程完全相同了。 所以,数字证书主要解决了公钥的安全发放问题。 因此,包含数字证书的整个签名和校验流程如下图所示: ?...然后,如果破坏者使用自己的私钥去加密生成“SF”数据块,那么使用开发者的公钥去解密“SF”数据块中的数字签名就会失败; 最后,更进一步,若破坏者甚至替换了开发者公钥,那么使用数字证书中的公钥校验签名块中的公钥就会失败

    1.5K90

    5分钟短文 | Android证书生成,签名,验证,虽然难,但学一次就够了!

    引言 从Android演进开始,APK签名就已经成为Android的一部分,并且android要求所有Apks都必须先签名,然后才能将其安装在设备上。关于如何生成密钥以及如何签名的文章很多。...验证Android应用程序 使用jarsigner验证应用程序,以查看资源签名列表以及具有keysize的哈希算法。...打开您的终端: jarsigner -verify -verbose medium.apk 其中仅验证将显示它是签名还是未签名,并使用详细选项查看证书的完整详细信息。...或者,您可以使用Apk签名者来自动完成文件名验证应用。...写在最后 虽然上面我们使用的都是 java 工具链的东西,其实生成的 CERT.RSA 文件内,包含了公钥链,也完全可以使用 openssl 工具打印出 pubkey 证书文件,并可做进一步的指纹校验。

    1.1K20

    手把手教你逆向分析 Android 程序

    Android 的签名保护机制到底是什么? Android 系统禁止更新安装签名不一致的 Apk,如果我们修改了 Apk 又用别的签名文件签名,肯定是不一致的。...signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk 这行的意义: 以testkey.x509.pem 这个公钥文件和...,安装的时候只能通过公钥解密,解密之后才能获得正确的摘要,再对比。...最后就是如何生成 CERT.RSA,打开这个文件看到的是乱码,说明整个文件都被编码加密了,而且这个文件和公钥有关,从源码中看出他是通过 PKCS7 将整个文件加密了。...总结:1.签名只是对完整性和签名发布机构的校验机制 2.不能阻止 Apk 被修改,只是签名无法保持一致 3.不同私钥对应着不同的公钥,实质上不同的公钥就代表了不同的签名。 3.

    3.3K181

    6.android加密解析

    md5之后长度是一样的,是单向的; 作用:确定数据未被修改,确定数据的唯一性 密码一般会md5,加盐 秒传:长度变小了 android supoort v4:检验是否修改过 加密:aes de 对称加密...:密码只有一个,加密速度比较快,只有一个密钥,可以加密文件之类; 非对称加密:密钥有两个(公钥,私钥),私钥自己保存.公钥给别人.私钥自己留着; 公钥加密-->私钥解密 public static...私钥签名-->公钥验证-->数字签名 public static String sign(byte[] data, String privateKey);//私钥签名 public static...boolean verify(byte[] data, String publicKey, String sign)//公钥验证 数字签名作用:来源的不可否认性 公钥互换:相互置换公钥 sqlite...(同样,反编译apk,可以拿到so库,然后可以调用本地方法获取到密码) 混淆(也是可以拿到,混淆的时候.我们的字符串是不会进行混淆的.只是混淆我们方法名,以及变量名) apk如何防止被反编译 梆梆加固

    975111

    ​Android抓包总结-HTTPS单向认证&双向认证突破

    一般是把公钥给别人,让别人进行加密后再传给自己用私钥解密,比如RSA。 CA证书相关知识 CA证书是由CA机构发布的数字证书。其内容包含:电子签证机关的信息、公钥客户信息、公钥、签名和有效期。...这里的公钥服务端的公钥,签名是指:hash散列函数计算公开的明文信息的信息摘要,可以理解成身份证信息,然后CA的私钥对信息摘要进行加密,加完密之后就是签名。...证书 = 公钥+信息摘要+签名 由于在客户端操作系统中就预留了CA的公钥,所以支持解密签名。 有了这些概念,来看看https是怎么做到安全认证的。 02 HTTPS单向认证 ?...在单向认证的实现上,占据主动性的还是客户端,因为只要客户端认可了server发来的签名和认证,然后直接告诉服务器我们下次使用什么秘钥进行通讯就行了。单向认证是在客户端上验证的。...突破思路:有函数会对内置证书或者公钥进行比照验证,如果让它一直返回通过,就可以绕过了。

    5K20

    精选Android中高级面试题 -- 终局之篇:高级干货

    :签名算法和验证算法 数字证书:一个经证书授权(Certificate Authentication)中心数字签名的包含公钥拥有者信息以及公钥的文件 推荐文章:一篇文章看明白 Android v1 &...,签名以文件的形式存在于apk包中,这个版本的apk包就是一个标准的zip包,V2和V1的差别是V2是对整个zip包进行签名,而且在zip包中增加了一个apk signature block,里面保存签名信息...签名):开发者对SignerData部分数据的签名数据 PublicKey(公钥):用于验签的公钥数据 v3版本签名块也分成同样的三部分,与v2不同的是在SignerData部分,v3新增了attr块,...前一个level块证书验证下一个level证书,以此类推。最后一个level块的证书,要符合SignerData中本身的证书,即用来签名整个APK的公钥所属于的证书 ?...Glide的源码设计哪里很微妙?

    1.3K20

    安卓安装包签名_笔记签名验证

    文件,用我们私钥计算出签名,然后将签名以及包含公钥信息的数字证书一同写入CERT.RSA中保存。...用户无法获得其私钥信息,没法伪装。 v1版本签名下的多渠道包实现 既然上面的签名校验方式,不允许我们对apk解压之后的某个文件的修改。...在解译该分块时,应忽略 ID 未知的“ID-值”对. 验证 在 Android 7.0 及更高版本中,可以根据 APK 签名方案 v2+ 或 JAR 签名(v1 方案)验证 APK。...V3签名方案 Android 9 支持 APK秘钥轮替,这使应用能够在 APK 更新过程中更改其签名密钥。为了实现轮替,APK 必须指示新旧签名密钥之间的信任级别。...为了支持密钥轮替,google将 APK签名从 v2 更新为 v3,以允许使用新旧密钥。

    1.3K30
    领券