[환경] 윈도우즈에서 안드로이드 해쉬키 생성에 대해서

안녕하세요. 저는 카카오SDK를 앱에 붙일려고 하는 안드로이드 개발자인데요.

리눅스에서는 모르겠으나 윈도우에서 해쉬 키 값을 만드는데 문제가 있네요.

이거 때문에 하루동안 삽질한거 생각하면 분통 터져서 이렇게 글을 올려봅니다.

분명 카카오SDK 가이드에 따르면 해쉬 키 값을 만들 때 다음과 같이 하라고 나와 있습니다.

keytool -exportcert -alias androiddebugkey -keystore <debug_keystore_path> -storepass android -keypass android | openssl sha1 -binary | openssl base64

그래서 위의 명령대로 제꺼의 debug.keystore를 적용해 보니 다음과 같은 값이 나옵니다.

hash key : GIik3LUs3Vtn0mOSEWPlal7jAJM=

하지만 위의 키는 전혀 엉뚱한 해쉬키 값입니다.

카톡 내부 인증과정은 위에서 나온 해쉬키를 카톡서버로 전송하고 있지 않단걸 파악하고

그래서 찾아본 결과 스택 오버플로우는 다음과 같이 해쉬 키 값을 만들라고 합니다.

웹링크 : http://stackoverflow.com/questions/5306009/facebook-android-generate-key-hash

In order to generate key hash you need to follow some easy steps.

  1. Download Openssl from: here.

  2. Make a openssl folder in C drive

  3. Extract Zip files into this openssl folder created in C Drive.

  4. Copy the File debug.keystore from .android folder in my case (C:\Users\SYSTEM.android) and paste into JDK bin Folder in my case (C:\Program Files\Java\jdk1.6.0_05\bin)

  5. Open command prompt and give the path of JDK Bin folder in my case (C:\Program Files\Java\jdk1.6.0_05\bin).

  6. Copy the following code and hit enter

keytool -exportcert -alias androiddebugkey -keystore debug.keystore > c:\openssl\bin\debug.txt

  1. Now you need to enter password, Password = android.

  2. If you see in openssl Bin folder, you will get a file with the name of debug.txt

  3. Now either you can restart command prompt or work with existing command prompt

  4. get back to C drive and give the path of openssl Bin folder

  5. copy the following code and paste

openssl sha1 -binary debug.txt > debug_sha.txt

  1. you will get debug_sha.txt in openssl bin folder

  2. Again copy following code and paste

openssl base64 -in debug_sha.txt > debug_base64.txt

  1. you will get debug_base64.txt in openssl bin folder

  2. open debug_base64.txt file Here is your Key hash.


보시면 아시겠지만 순차적으로 키값을 파일로 쓰고 그것을 변환하는 과정입니다.

위의 처럼 순차적으로 만든 것과 카카오톡 매뉴얼에 | (or) 연산을 통해서 만든값은

전혀 다릅니다. 그러니 카카오톡 관계자분께서는 내용 확인 좀 부탁드릴께요.

9개의 좋아요

우선 공유해 주신 것에 대해 감사드립니다~
베타 기간이라 메뉴얼에 부족한 부분이 많고, 특히 윈도우 플랫폼에 대한 가이드가 많이 부족한 것이 사실입니다.
이렇게 윈도 개발자분들이 지속적으로 공유해 주시면 많은 도움이 될 것 같네요~
확인해 보고 가이드 업데이트 하겠습니다.
앞으로도 많은 공유 기대하겠습니다~!

@cynexus4
windows에서 확인해 보았는데 말씀하신 것과는 달리 가이드대로 잘 동작하여 재현을 해보지는 못했네요.
windows version, os encoding, kakao sdk version, java version, android version 등등 환경문제로 보이는데요. 좀 더 자세한 환경 변수들에 대한 정보가 있으면 같은 문제를 겪고 있는 개발자들에게 도움이 될 것 같습니다.
가이드는 윈도우즈에 대해 조금 다듬어 곧 배포 됩니다.

@MJ_
저도 key hash 만드는 문제로 이틀정도 고생했는데,

일단 window 용 jdk1.7.0_60 ( x64로 다운로드한 것 ) 에는 openssl.exe 가 없어서, 질문자분 말씀처럼 따로 openssl을 다운로드해야 하는 수고로움이 있습니다.

환경변수 문제는 아니구요.

Stackoverflow 에서 찾은 방법으로는 따로 키해시를 만드는 함수를 사용해서 해결할 수 있다고 되어있습니다. stackoverflow 외에 국내에서도 블로거분들이 많이 찾아놓으셨네요.

private void getAppKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md;
            md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String something = new String(Base64.encode(md.digest(), 0));
            Log.d("Hash key", something);
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        Log.e("name not found", e.toString());
    }
}

저는 해당 프로젝트에서 요 함수로 key hash 를 먼저 얻은 후에 그걸 등록해서 사용했습니다.

9개의 좋아요

우선 작성자 cynexus4님께 대단히 감사드립니다.
위의 방법으로 정확한 해시 키를 생성했습니다.

저도 카카오 개발가이드에 따라 해시 키를 생성했으나
로그인시에 로그인이 되지 않고 다시 메인 페이지로 돌아가는 상황이라 디버그를 확인하였는데
error:misconfigured 에 포함된 key_hash키와 전혀 다른 키를 뱉어
해시키 생성에 대해 대단히 난처했습니다.

카카오 개발가이드에서 제공하는 방식은 pc 환경에 따라 엉뚱한 해시 키를 뱉을 수 있으니
다양한 환경에서 확인해보시고 개발가이드의 해시 키 생성 방식에 대해 검토해주시면 감사하겠습니다.

제 경우에는
우선 openssl 이 설치되어 있지 않아서 다운부터 받아
해시키를 생성했었는데
openssl의 버전에 따라 생성되는 값이 다르더라구요.

제 경우에는 openssl-0.9.8k_X64는 안되고,
openssl-0.9.8e_X64 버전은 잘됩니다.
참고해 주세요…

2개의 좋아요

감사합니다.
버전을 말씀하신것처럼 e버전으로 받았더니 되네요~ㅋ
k랑 e버전이랑 뭐가 다른건지 모르겠지만…

정말 대단히 감사 합니다! 윈도우에서는 해시값이 엉뚱한놈이 계속 뜨는 군요 ㅠ

정말 감사합니다!

1개의 좋아요

위 메서드로 실행하면 디버그키는 뽑을수 있지만 릴리즈키는 뽑지 못합니다.

엥? 난 이걸로 릴리즈키도 뽑았는데여??

2개의 좋아요

감사합니다!! 덕분에 해쉬키 문제 해결했어요!!!

1개의 좋아요

감사합니다 ^^ 당신이 진정한 지식인

1개의 좋아요

릴리즈 키는 어떻게 뽑았나요?

로그로 해시키를 임시로 출력시키시고
릴리즈 키스토어로 apk 만들어서 핸드폰에 올리고 실행시키면 릴리즈 해시키가 나오겠죠? ㅎㅎ

1개의 좋아요

제 경우에는 또 openssl-0.9.8e X64 이 아닌 openssl-0.9.8k X64 으로 해야 잘 되네요 ㅎㅎ 참고하세요

오늘 하루종일 해시 키 때문에 고생했는데 openssl-0.9.8e_X64 ← 이 버전으로 한방에 해결됐습니다.

감사합니다. ㅋ

흠… 저는 kakao 로그를 통해서 hash key 읽어서 그 hash key 를 바로 적용 하였습니다.

1개의 좋아요

저도 이거 때문에 하루를 날렸네요 -_-;;
openssl-0.9.8e 에서는 잘 되는데, 나름 최신버전이라고 k 받았다가 생 고생만 했습니다.
SDK 가이드 잘 못하면 진짜 이런거 때문에 욕 먹는건데,
그나마 구글링 하다 이 토픽을 찾아서 망정이지, 아놔, 진짜 고생한거 생각만 하면.

1개의 좋아요

카카오 개발 가이드에 나온 해쉬키 생성 방법을 써서 나온 키는 사용 시 유효하지 않은 키라고 표시 됩니다. 그래서 글쓴이 분 방법을 썼는데, openssl-0.98e_x64 버전으로 BEX64 에러가 납니다.
windows7 64bit ultimite-k 버전 입니다.
openssl-098k로 했을때는 정상적으로 생성되고, 로그인 샘플 실행했을때 정상적으로 통신하는 것을 확인했습니다. 참고해주세요.

  1. 개발 가이드라인으로 일단 키 생성 후 샘플 돌려서 확인
  2. 안되면, 글쓴이 분 방법으로 생성후 확인

여러가지 환경에 따라 값이 다른 것 같습니다. 가이드라인도 여러가지 환경으로 테스트 후에 보완 수정했으면 삽질하는 분들이 줄어들 것 같습니다.

1개의 좋아요

Key를 활성화 한 후 어느정도 시간이 경과되야 적용이 되는건지~ 바로 적용되는건지
어리버리하다 어느새 적용~

  1. 저자 내용대로 생성후 확인하시고, 적용하시면 잘 됩니다. ( 개인차인지 모르지만, 적용에는 시간이 좀 걸렸네요~ )