안드로이드

[Android] 해시키 확인

SojuMan 2018. 11. 14. 17:12

 

카카오톡 SDK / 페이스북 SDK에 등록시 필요한 해시키

개발시에는 debugkey의 해시태그로 등록하여 작업했다.



Kotlin 소스 


 

fun getHashKey(context: Context): String? {

try {

    if (Build.VERSION.SDK_INT >= 28) {

        val packageInfo = getPackageInfo(context, PackageManager.GET_SIGNING_CERTIFICATES)

            val signatures = packageInfo.signingInfo.apkContentsSigners

            val md = MessageDigest.getInstance("SHA")

            for (signature in signatures) {

            md.update(signature.toByteArray())

                return String(Base64.encode(md.digest(), NO_WRAP))

            }

         } else {

          val packageInfo =

            getPackageInfo(context, PackageManager.GET_SIGNATURES) ?: return null


for (signature in packageInfo!!.signatures) {

            try {

                val md = MessageDigest.getInstance("SHA")

                    md.update(signature.toByteArray())

                    return Base64.encodeToString(md.digest(), Base64.NO_WRAP)

                } catch (e: NoSuchAlgorithmException) {

                // ERROR LOG

                }

            }

        }

} catch (e: PackageManager.NameNotFoundException) {

    e.printStackTrace()

    } catch (e: NoSuchAlgorithmException) {

    e.printStackTrace()

    } 


return null

}


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));
Logs.e("keyHash : " + keyHash);
}

} catch (Exception e) {
Log.e("name not found", e.toString());
}

if (keyHash != null) {
return keyHash;
} else {
return null;
}
}

라이브 진행시 해시태그를 구하기 위해 아래의 Openssl 설치 필요.

Openssl

http://slproweb.com/products/Win32OpenSSL.html

 

Win64 OpenSSL v1.1.1 의 EXE 버전을 다운 받아 설치항 넥스트만 하였더니 설치 완료.

 

C:\Program Files\OpenSSL-Win64\bin 폴더를 환경변수 path에 넣어준다.

 

실행 : CMD

 

CD C:\Users\PC\.android 폴더로 이동한다 debug.keystore 등의 파일이 있는 곳으로 이동한다.

 

alias 확인 방법

배포 버전 키의 위치 경로 값을 넣고 확인한다.

명령어 : keytool -list -keystore "\폴더\내키.jks"

 

 

 

인증서 지문 위의 파란색 부분 명칭을 확인한다.

 

이제 alias 명칭을 넣고 실행한다

keytool -exportcert -alias 위에서찾은(alias) -keystore "\폴더\내키.jks" | openssl sha1 -binary | openssl base64

 

alias 가 test라면

keytool -exportcert -alias test -keystore "\폴더\내키.jks" | openssl sha1 -binary | openssl base64

 

요럼 정상적으로 API 가 사용가능한게 확인되다.