프로그래밍/Android

[Android] HashKey 구하기

여름숲_ 2018. 1. 16. 16:23

HashKey 구하기

키 해시를 구하는 방법은 여러가지가 있겠지만, 저는 프로젝트에서 코드를 이용하여 구하는 방법이 가장 쉽고 정확하다고 생각합니다.


MainActivity.java



package rebuild.com.hashkey;


import android.content.Context;

import android.content.pm.PackageInfo;

import android.content.pm.PackageManager;

import android.content.pm.Signature;

import android.support.annotation.Nullable;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Base64;

import android.util.Log;


import java.security.MessageDigest;


public class Mainctivity extends AppCompatActivity {

    private Context mContext;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mContext = getApplicationContext();


        getHashKey(mContext);

    }


    // 프로젝트의 해시키를 반환

    @Nullable

    public static String getHashKey(Context context) {

        final String TAG = "KeyHash";

        String keyHash = null;

        try {

            PackageInfo info = 

context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);


            for (Signature signature : info.signatures) {

                MessageDigest md;

                md = MessageDigest.getInstance("SHA");

                md.update(signature.toByteArray());

                keyHash = new String(Base64.encode(md.digest(), 0));

                Log.d(TAG, keyHash);

            }

        } catch (Exception e) {

            Log.e("name not found", e.toString());

        }


        if (keyHash != null) {

            return keyHash;

        } else {

            return null;

        }

    }

}


메서드를 추가하신 후에, 실행을 시키면 로그를 통해 키 해시 값을 얻을 수 있습니다. 주의 하실 점은 디버그용과 릴리즈용 키 해시 값은 다르니, 차후, 실제 서비스시에는 릴리즈용 키해시 값도 등록을 해주어야 합니다.