一、问题
在国内各大应用市场或facebook为自己的应用申请参数时,基本都会要求填写一个签名(facebook的说法是keyhash),那么这个签名(或keyhash)是如何获得的呢?
二、方法
方法一、在安装需要获取签名的apk后,使用各平台提供的类似gen_signatures.apk工具,安装后打开输入包名来得到MD5签名;
使用新浪微博提供的app_signatures.apk生成的签名如下:
方法二、在使用Eclipse的Android Tools导出签名包的最后一步(选择APK存放路径后)时,Eclipse提供的MD5签名。
签名如下:
方式三、在cmd中输入命令keytool - printcert - file [加压apk后文件详细路径]/META-INF/CERT.RSA
自己测试失败的其他猜想:
1.获取debug.keystore的全部内容得到的MD5值73b66ca14694f0ea248281214832c700<br />
2.获取CERT.RSA的全部内容得到的MD5值2432494f239760e7e735d5b9a1bc0496<br />
3.获取CERT.SF的全部内容得到的MD5值4f52cf48efabe3f65ade675b62b42bbe<br />
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命令的具体代码,有哪位知道可以告知我,在此先谢谢了!!!