准备工作
1.去https://code.google.com/p/openssl-for-windows/downloads/list下载OpenSSL工具
2.在C盘根目录下新建一个openssl的文件夹,并将OpenSSL压缩包解压到此文件夹中
3.找到debug.keystore文件复制粘贴到Java JDK的bin目录下(C:\Program Files\Java\jdk1.8.0_211\bin)
4.找到自己的签名文件(debug.keystore),将其复制粘贴到Java JDK的bin目录下(C:\Program Files\Java\jdk1.8.0_211\bin)
准备工作完毕后
- 打开CMD ,路径设置到JavaJDK 的bin路径下,执行以下代码:
keytool -exportcert -alias debug -keystore debug.keystore > c:\openssl\bin\debug.txt
密码是:android (执行完后在 C盘的openssl文件夹下生成了debug.txt文件)
2.打开CMD,路径设置到openssl文件夹下的bin目录(C:\openssl\bin)执行以下代码:
openssl sha1 -binary debug.txt >debug_sha.txt
- 继续执行以下代码:
openssl base64 -in debug_sha.txt >debug_base64.txt
执行完后在C盘的openssl文件夹下生成了debug_base64.txt文件
4.打开debug_base64.txt即可得到KeyHash
附:另外一种更直接简单的方法
将key拷贝到jdk的bin目录下,然后打开CMD ,路径设置到JavaJDK的bin目录下,然后执行以下命令:
//得到hashkey
keytool -exportcert -alias debug -keystore debug.keystore | openssl sha1 -binary | openssl base64
//得到 MD5、SHA1、SHA256
keytool -list -v -keystore debug.jks
通过代码来获取:
try {
PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.d("KeyHash:", "KeyHash:" + KeyHash);//两次获取的不一样 此处取第一个的值
// Toast.makeText(this, "FaceBook HashKey:"+KeyHash, Toast.LENGTH_SHORT).show();
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
注:此方法要用签名的包,如果未签名会返回一个假的keyHash
网友评论