关山初度尘未洗,策马扬鞭再奋蹄!这篇文章主要讲述Android 签名比较相关的知识,希望能为你提供帮助。
一.
keytool -list -printcert -jarfile "%filename%"
二. 非常low方法:下载的应用安装能成功覆盖原应用则签名一致
三.
作者:陈子腾
链接:https://www.zhihu.com/question/20749413/answer/16715284
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
1. 查找apk里的rsa文件
(Windows)
>
jar tf HelloWorld.apk |findstr RSA
(Linux)
$ jar tf HelloWorld.apk |grep RSA
META-INF/CERT.RSA
2. 从apk中解压rsa文件
jar xf HelloWorld.apk META-INF/CERT.RSA
3. 获取签名的fingerprints
keytool -printcert -file META-INF/CERT.RSA
...
Certificate fingerprints:
MD5:BC:6D:BD:6E:49:69:2A:57:A8:B8:28:89:04:3B:93:A8
SHA1: 0D:DF:76:F4:85:96:DF:17:C2:68:1D:3D:FF:9B:0F:D2:A1:CF:14:60
Signature algorithm name: SHA1withRSA
Version: 3
...
4. 清理工作,删除rsa文件
(Windows)
rmdir /S /Q META-INF
(Linux)
rm -rf META-INF
如果你想知道两个apk是不是用的同一个签名,那比一下它们签名的MD5码(或SHA1码)是不是一样就行了。pasting
四.
作者:王仲禹
链接:https://www.zhihu.com/question/20749413/answer/17436681
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
毕设做的是android应用重打包检测,首先就需要批量检测Android应用之间签名是否一致。所以在这里介绍一下在终端中如何写脚本或者直接输入命令批量检测应用签名是否一致。
Android应用的发布形式apk中包含的签名加密方法除了RSA还有DSA,所以不能只从apk中提取常见的META-INF/CERT.RSA,第一步应该是检查apk中具体的签名文件是什么。
FILE="yourapp.apk"
cert_XSA=`jar tf $FILE | grep SA`
此时得到的cert_XSA可能是META-INF/*.RSA或者META-INF/*.DSA。
接下来从apk中提取具体的签名文件。
jar xf $FILE $cert_XSA
此时会在当前目录得到cert_XSA文件。
然后对于得到的签名文件,提取其中签名的MD5值
keytool -printcert -file $cert_XSA | grep MD5 >
"$FILE.certMD5"
这时候yourapp.certMD5这个文件中就保存了yourapp.apkk中的签名MD5值。
最后比较两个app的签名可以用diff
FILE1="yourapp1.apk"
FILE2="yourapp2.apk"
# ...
# ... 经过上述步骤得到$FILE1.certMD5和$FILE2.certMD5
# ...
certMD5_diff=`diff $FILE1.certMD5 $FILE2.certMD5`
if [ "$certMD5_diff" = "" ];
then
echo "$FILE1.certMD5 == $FILE2.certMD5"
fi
若输出yourapp1.apk.certMD5 == yourapp2.apk.certMD5那么这两个应用的签名就一致。pasting【Android 签名比较】
推荐阅读
- Android毛玻璃模糊化效果处理
- Android之菜单总结
- android开发--多线程
- Android学习笔记(摇一摇功能的实现)
- wemall app商城源码Android之支付宝通知处理类
- Android Studio插件安装及使用Genymotion模拟器
- 手机端横竖屏切换,怎么做才能安卓浏览器及时改变字体大小
- Android核心组件 Activity组件
- android WebView总结