準備工作
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 抄肖,路徑設(shè)置到JavaJDK 的bin路徑下,執(zhí)行以下代碼:
keytool -exportcert -alias debug -keystore debug.keystore > c:\openssl\bin\debug.txt
密碼是:android (執(zhí)行完后在 C盤的openssl文件夾下生成了debug.txt文件)
2.打開CMD,路徑設(shè)置到openssl文件夾下的bin目錄(C:\openssl\bin)執(zhí)行以下代碼:
openssl sha1 -binary debug.txt >debug_sha.txt
- 繼續(xù)執(zhí)行以下代碼:
openssl base64 -in debug_sha.txt >debug_base64.txt
執(zhí)行完后在C盤的openssl文件夾下生成了debug_base64.txt文件
4.打開debug_base64.txt即可得到KeyHash
附:另外一種更直接簡單的方法
將key拷貝到j(luò)dk的bin目錄下砚著,然后打開CMD 咳秉,路徑設(shè)置到JavaJDK的bin目錄下,然后執(zhí)行以下命令:
//得到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