揭开Android获取应用签名的神秘面纱

一、问题

            在国内各大应用市场或facebook为自己的应用申请参数时,基本都会要求填写一个签名(facebook的说法是keyhash),那么这个签名(或keyhash)是如何获得的呢?

二、方法

           方法一、在安装需要获取签名的apk后,使用各平台提供的类似gen_signatures.apk工具,安装后打开输入包名来得到MD5签名;

       使用新浪微博提供的app_signatures.apk生成的签名如下:

揭开Android获取应用签名的神秘面纱_第1张图片

         方法二、在使用Eclipse的Android Tools导出签名包的最后一步(选择APK存放路径后)时,Eclipse提供的MD5签名。

       签名如下:



       方式三、在cmd中输入命令keytool - printcert - file [加压apk后文件详细路径]/META-INF/CERT.RSA
揭开Android获取应用签名的神秘面纱_第2张图片
      自己测试失败的其他猜想:
     1.获取debug.keystore的全部内容得到的MD5值73b66ca14694f0ea248281214832c700
     2.获取CERT.RSA的全部内容得到的MD5值2432494f239760e7e735d5b9a1bc0496
     3.获取CERT.SF的全部内容得到的MD5值4f52cf48efabe3f65ade675b62b42bbe
     4.获取MANIFEST.MF的全部内容得到的MD5值aafe486292bb402c71fc53f2242947e3

三、总结

        经过各种测试发现:MD5签名只跟CERT.RSA(就是根据xxx.keystore生成的)有关,跟包名什么的没关系,方法一中输入包名也只是为了获取本apk下的CERT.RSA文件;但又不是由CERT.RSA的完整内容直接MD5生成的,更不是由debug.keystore/CERT.SF/MANIFEST.MF的完整内容直接MD5生成的。
       具体是根据CERT.RSA文件的哪部分或哪几部分内容生成的,需要继续研究keytool命令的具体代码,有哪位知道可以告知我,在此先谢谢了!!!

你可能感兴趣的:(android,keytool,应用签名)