PHP头条
热点:

PHP程序下如何取得APK签名以及验证是否一致


近期的需要取到APK的签名,以此来比对开发者上传的APK软件是否与原创APK的签名一致,以此保护正版APK软件的权益。同时避免像破解,汉化之类的 软件,覆盖在线的正版。所以这个功能需求还是很有必要实现的。

本人对JAVA不太懂,开始想是不是能通过PHP技术来解决这个问题。但是通过查找各方面的 资料,没有找到好的办法。

最后转而去先了解了一下JAVA对包签名原理,再通过JAVA方面去找答案,最终是解决了这个问题。可是这样解决的方法,并不是 我期待的。我很希望会有更加简洁的方法实现,如果有更好解决的方案的朋友,可以留言给我。希望多交流。

下面就讲一下取比对APK签名一致的步骤,总的步骤先归纳如下几点,然后我分别做解释:
1.在服务器上安装JDK,使用keytool命令生效。
2.分别到取到二个APK包的证书指纹。
3.通过指纹信息,对比是否相等,判断是否为同一软件。

现在按上面给出的思路,来执行操作就可以。我们接着往下走:

第一步:在CentOS服务器下安装JDK,让keytool命令生效可以使用。

a.下载适合贵公司服务器的JDK版本。
下载址址:http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html

我测试的时候,下载的是:jdk-6u29-linux-x64.bin 。

[root@web-1 home]# wget http://download.oracle.com/otn-pub/java/jdk/6u29-b11/jdk-6u29-linux-x64.bin

b.安装并配置JDK.

[root@web-1 home]# ./jdk-6u29-linux-x64.bin 

[root@web-1 home]# mv jdk1.6*  /usr/local/java

[root@web-1 home]# cat >> /etc/profile  << EFF
########################################
JAVA_HOME=/usr/local/java
JRE_HOME=\$JAVA_HOME/jre
CLASSPATH=:\$JAVA_HOME/lib:\$JRE_HOME/lib
PATH=\$JAVA_HOME/bin:\$JRE_HOME/bin:\$PATH
 


或者是:
unzip -p mumayidianzishichang_Mumayi_Market_V1.4_mumayi_91db5.apk META-INF/CERT.RSA | keytool -printcert | grep SHA1
输出如下:
[root@web-1 1]# unzip -p mumayidianzishichang_Mumayi_Market_V1.4_mumayi_91db5.apk META-INF/CERT.RSA | keytool -printcert | grep MD5
         MD5:  19:2A:5C:11:3E:72:A0:A1:A1:10:A3:BE:C3:9C:D5:32
[root@web-1 1]# unzip -p mumayidianzishichang_Mumayi_Market_V1.4_mumayi_91db5.apk META-INF/CERT.RSA | keytool -printcert | grep SHA1
         SHA1: 91:83:AF:08:B5:00:88:85:E6:4C:E9:41:4E:3B:06:EC:51:E8:F8:83
         Signature algorithm name: SHA1withRSA


www.phpzy.comtrue/phpkj/12335.htmlTechArticlePHP程序下如何取得APK签名以及验证是否一致 近期的需要取到APK的签名,以此来比对开发者上传的APK软件是否与原创APK的签名一致,以此保护正版APK软件的权益。同时避免像破解,汉化之...

相关文章

相关频道:

PHP之友评论

今天推荐