Android

안드로이드 해시키 구하는 방법, 카카오 API

태인킴 2021. 4. 12. 23:56
반응형


android 네이티브 앱 개발시카카오 API 를 이용하게 되면 '키 해시' 값을 요구 합니다.

카카오 API 뿐만 아니라 여러 소셜 API 에서 요구 하는 경우가 많이 있습니다.

'키 해시' : 앱의 사이닝 키 시그니처(Signing key signature)를 해시한 값

따라서 API를 호출한 서버는 등록된 '키 해시'네이티브 앱 키매치 하는지 비교하여 악성 앱판별 합니다.

 

따라서 '키 해시'등록해주기 위해서 추출 하는 방법은 2 가지가 있습니다.

1. java의 keytool 명령어CMD 창에 입력하여 얻을수 있습니다. 이 방법은 익숙하지 않으신 분들은 조금 복잡 할수 있습니다.

2. 앱 내의 java 소스로 '키 해시'를 로그캣의 출력하여 확인 할수 있습니다.(추천)

2번 java 소스는 다음과 같습니다. HashGetter 라는 클래스를 다음과 같이 만듭니다.

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.util.Base64;
import android.util.Log;
import java.security.MessageDigest;

public class HashGetter {

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

 

 

로그를 출력하기 원하는 액티비티 내 에서 아래와 같이 호출 하여 로그캣의 출력 할 수 있습니다.

HashGetter.getHashKey(getApplicationContext());

 

 

카카오 개발자 문서1번 keytool 명령어를 이용한 방법 또한 잘 설명되어 있습니다.

아래 링크를 참고해주세요.

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

반응형