两种方式:一个通过电脑jdk、openssl获取,一个通过安卓代码获取。
方式一:
转自:http://www.manongjc.com/detail/14-nhmzueqxzzcsumt.html
1.先下载安装OpenSSL工具。
2.将你的 .keystore文件复制到JAVA JDK 文件夹的bin目录里面(C:\Program Files (x86)\Java\jdk1.8.0_144\bin)
win+R打开命令控制器,cd到JANA JDK的bin文件夹下
执行这个命令
keytool -exportcert -alias androiddebugkey -keystore debug.keystore > c:\openssl\bin\debug.txt
其中androiddebugkey是你 .keystore文件的别名,debug是你 .keystore文件的名字。c:\openssl\bin是openssl安装路径。所以命令要这么写(网上好多说debug.keystore找不到的...):
keytool -exportcert -alias 秘钥别名 -keystore 秘钥名字.keystore > c:\openssl\bin\秘钥名字.txt
下方是出现在debug.txt文件里的错误解决方式:
keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect一般情况下是你密码错啦。
keytool 错误: java.lang.Exception: 别名
3.然后路径cd到openssl文件夹下的bin目录
执行
opensslsha1 -binarydebug.txt >debug_sha.txt
会生成debug_sha.txt文件
再执行:
openssl base64 -in debug_sha.txt >debug_base64.txt
生成的debug_base64.txt里就是你需要的28位的秘钥散列。
方式二:
转载自:https://www.jianshu.com/p/cfe54d50e7f2
把下面代码写在要打的包里,运行之后,在log里可以看到key是多少。
或者打个测试包,一定要用正式包的签名打测试包(包名一不一样无所谓),运行,看log有结果。
void getFaceBookKey() {
try {
int i = 0;
PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
i++;
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
//KeyHash 就是你要的,不用改任何代码 复制粘贴 ;
Log.e("tyl","KeyHash="+KeyHash);
}
}
catch (PackageManager.NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}
}
复制之后需要自动引用代码才会消除错误,Androidstudio里alt+enter就自动引用了。
完结。