본문 바로가기
Android/Develop

[Android] HashKey 구하기

by hyun's life_developer 2019. 10. 16.

 

안녕하세요 초보개발자 시아아빠입니다.

HashKey 구하는 법을 간단히 소개하겠습니다.

 

다음은 프로젝트에서 구현하여 HashKey를 알아내는 법 입니다.

 

해쉬키 구하는 코드입니다. (아무 프로젝트에서나 만들어서 실행하면 되구요 모든 프로젝트 동일합니다.) 

package com.siadday.패키지명;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.util.Base64;
import android.util.Log;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MainActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getHashKey();
    }
    
    private void getHashKey()
    {
        PackageInfo packageInfo = null;
        try
        {
            packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        }
        catch (PackageManager.NameNotFoundException e)
        {
            e.printStackTrace();
        }
        
        if (packageInfo == null)
            Log.e("KeyHash", "KeyHash:null");

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

이렇게 실행 후  Logcat에서 keyhash를 검색하여 찾습니다.

 

여기서 주의할 점은 디버그용과 릴리즈용 HashKey값이 다르므로,

실제 서비스시에는 릴리즈용 키해시 값도 등록을 해주셔야합니다.

댓글