2017-06-04 8 views
8

मैंने Google play ऐप साइनिंग का चयन किया है और मैं समझता हूं कि Google ऐप के लिए साइनिंग कुंजी बदलता है और मुझे शा 1 प्रमाणपत्र मिला लेकिन कुंजीशैश नहीं मिला।Google play ऐप साइनिंग कुंजी हैश

मैं अपने रिलीज़ किए गए ऐप की कीशैश कैसे प्राप्त कर सकता हूं, इसे प्रमाण पत्र से निकालने का कोई तरीका है?

उत्तर

14

आप Sha1 प्रमाणपत्र हस्ताक्षर से कीशैश निकाल सकते हैं। कुंजी हैश आमतौर पर निम्नलिखित तरीके से निकाले जाते हैं:

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; 
} 

आप देख सकते हैं कि हस्ताक्षर का SHA-1 संस्करण Base64 एनकोडेड है।

Google Play डेवलपर कंसोल में अनुप्रयोग पर हस्ताक्षर मेनू के अंतर्गत, आप शा -1 प्रमाण पत्र हस्ताक्षर कि इस तरह दिखता है देखेंगे:

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

असल में, आप क्या करना है एक बाइट सरणी में इसे बदलने के लिए है और बेस 64 एन्कोड कि बाइट सरणी। आप कुछ ऐसा कर सकते हैं:

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)); 

आप इस कीशैश को फेसबुक एंड्रॉइड लॉगिन सेटिंग्स या जहां चाहें पंजीकृत कर सकते हैं।

+0

यह बहुत अच्छी तरह से काम करता है। धन्यवाद! –

+0

ऐप से दाएं खाते पर लॉग इन करते समय आपको फेसबुक से एक त्रुटि संदेश में यह हैश मान भी मिलता है। दिलचस्प बात यह है कि हालांकि हैश बेहद समान दिखते हैं, जब मैं उपर्युक्त विधि का उपयोग करके इसे प्रोग्रामेटिक रूप से उत्पन्न करता हूं, तो यह काम करता है, जहां इसे दृष्टि से टाइप करना नहीं था। – Chris

+0

इस समाधान को खोजने में इतने घंटे बिताए, चीयर्स। –

17

आप बेस 64 हैश में हेक्स प्रारूप (के रूप में खेलने के कंसोल में पाया जाता है) में SHA-1 हैश परिवर्तित अगले आदेश का उपयोग कर सकते हैं:

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 

आउटपुट:

M05IhBlQOh9jpg/2ocIx5QE4VS4= 

इस हैश के लिए इस्तेमाल किया जा सकता उदाहरण के लिए फेसबुक ऐप सेट अप करते समय।

+0

+1000 एक्सेलेंट डाउनवॉट किया! – HerberthObregon

+0

सरल और काम करता है, धन्यवाद! –

+1

विंडोज़ में उबंटू में कमांड समर्थन नहीं –

संबंधित मुद्दे