2017-06-04 28 views
8

Tôi đã chọn ký ứng dụng google play và tôi hiểu rằng google thay đổi các phím ký cho ứng dụng và tôi tìm thấy chứng chỉ Sha 1 nhưng không thể tìm thấy keyhash.Mã khóa băm ứng dụng Google play

Làm cách nào tôi có thể lấy keyhash của ứng dụng đã phát hành của mình là có cách để trích xuất từ ​​chứng chỉ?

Trả lời

14

Bạn có thể trích xuất keyhash từ chữ ký chứng chỉ Sha1. Mã khóa thường được trích xuất theo cách sau:

public static String getKeyHash(final Context context) { 
    PackageInfo packageInfo = getPackageInfo(context, PackageManager.GET_SIGNATURES); 
    if (packageInfo == null) 
     return null; 

    for (Signature signature : packageInfo.signatures) { 
     try { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      return Base64.encodeToString(md.digest(), Base64.NO_WRAP); 
     } catch (NoSuchAlgorithmException e) { 
      Log.w(TAG, "Unable to get MessageDigest. signature=" + signature, e); 
     } 
    } 
    return null; 
} 

Bạn có thể thấy phiên bản chữ ký SHA-1 được mã hóa Base64.

Theo đơn Ký App trong Google phát triển trò chơi giao diện điều khiển, bạn sẽ thấy Sha-1 giấy chứng nhận chữ ký đó trông như thế này:

SHA1: 3B:DA:A0:5B:4F:35:71:02:4E:27:22:B9:AC:B2:77:2F:9D:A9:9B:D9 

Về cơ bản, những gì bạn phải làm là thay đổi này vào một mảng byte và Base64 mã hóa mảng byte đó. Bạn có thể làm một cái gì đó như:

byte[] sha1 = { 
    0x3B, (byte)0xDA, (byte)0xA0, 0x5B, 0x4F, 0x35, 0x71, 0x02, 0x4E, 0x27, 0x22, (byte)0xB9, (byte)0xAc, (byte)0xB2, 0x77, 0x2F, (byte)0x9D, (byte)0xA9, (byte)0x9B, (byte)0xD9 
}; 
Log.e("keyhash", Base64.encodeToString(sha1, Base64.NO_WRAP)); 

Bạn có thể đăng ký keyhash này để cài đặt đăng nhập android android hoặc bất cứ nơi nào bạn muốn.

+0

Tính năng này hoạt động rất tốt. Cảm ơn! –

+0

Bạn cũng nhận được giá trị băm này trong một thông báo lỗi từ facebook khi đăng nhập vào đúng tài khoản từ ứng dụng. Điều thú vị là mặc dù các băm dường như là trực quan giống nhau, khi tôi lập trình tạo ra nó bằng cách sử dụng phương pháp trên nó làm việc, nơi mà trực quan gõ nó trong không. – Chris

+0

dành rất nhiều thời gian để tìm giải pháp này, Chúc mừng. –

17

Bạn có thể chuyển đổi băm SHA-1 trong định dạng hex (như được tìm thấy trong Chơi console) vào base64 băm sử dụng lệnh tiếp theo:

echo 33:4E:48:84:19:50:3A:1F:63:A6:0F:F6:A1:C2:31:E5:01:38:55:2E | xxd -r -p | openssl base64 

Output:

M05IhBlQOh9jpg/2ocIx5QE4VS4= 

băm này có thể được sử dụng cho ví dụ khi thiết lập ứng dụng Facebook.

+0

+1000 nổi bật! – HerberthObregon

+0

Đơn giản và hoạt động, cảm ơn bạn! –

+1

hỗ trợ lệnh trong ubuntu không cửa sổ –

Các vấn đề liên quan