투케이2K

28. (AndroidStudio/android/java) 로컬, 구글 플레이스토어 등록된 sha1 인증서 해시 키 (hash key) 값 얻기 본문

Android

28. (AndroidStudio/android/java) 로컬, 구글 플레이스토어 등록된 sha1 인증서 해시 키 (hash key) 값 얻기

투케이2K 2021. 1. 28. 08:53

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

	//================================= [키해시 값 알아오는 메소드] =================================
	public String getHashKeyData(Context context){
		/**[키 해시 설명]
		 * 1. 해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑합니다
		 * 2. 키 해시는 특정 데이터(data)를 해시 함수(hash function)에 입력한 결과로 받은 리턴값을 말합니다
		 * 3. 사용 이유 - 카카오, 구글 등 API 호출 시 hash key를 통해 인증된 사용자인지 여부를 판단합니다
		 * */
		try {
			//TODO ====== [로컬 sha1 인증서 HashKey 얻기] ======
			String value_one = "";
			PackageInfo info = context.getPackageManager().getPackageInfo(String.valueOf(getPackageName()), PackageManager.GET_SIGNATURES);
			//PackageInfo info = context.getPackageManager().getPackageInfo(String.valueOf(getClass().getPackage().getName().trim()), PackageManager.GET_SIGNATURES);
			for (Signature signature : info.signatures) {
				MessageDigest md = MessageDigest.getInstance("SHA");
				md.update(signature.toByteArray());
				value_one = Base64.encodeToString(md.digest(), Base64.DEFAULT);
			}

			//TODO ====== [구글 플레이 스토어 등록 sha1 인증서 HashKey 얻기] ======
			byte[] sha1 = { (byte)0x1E, (byte)0xBE, (byte)0x45, (byte)0x66, (byte) 0x7A, (byte) 0x25, (byte) 0x8C, (byte) 0xFC, (byte) 0x9F, (byte) 0x44, (byte) 0xA4, (byte) 0x8F,
					(byte)0xB7, (byte)0x37, (byte)0xE8, (byte)0x79, (byte)0x88, (byte)0xEC, (byte)0x16, (byte)0x8F, };
			String value_two = "";
			value_two = Base64.encodeToString(sha1, Base64.NO_WRAP);

			//TODO ====== [추출한 HashKey 결과 출력 실시] ======
			Log.d("---","---");
			Log.d("//===========//","================================================");
			Log.d("","\n"+"[getHashKeyData() 메소드 > HashKey 값 확인 실시]");
			Log.d("","\n"+"[패키지 명 : "+String.valueOf(getPackageName())+"]");
			Log.d("","\n"+"[로컬 HashKey : "+String.valueOf(value_one)+"");
			Log.d("","\n"+"[플레이 스토어 등록 HashKey : "+String.valueOf(value_two)+"");
			Log.d("//===========//","================================================");
			Log.d("---","---");

			return value_one; //TODO [로컬 HashKey 반환]
			//return value_two; //TODO [플레이 스토어 등록 HashKey 반환]
		}
		catch (PackageManager.NameNotFoundException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return null;
	}

/* =========================== */

[결과 출력]

/* =========================== */

/* =========================== */

[요약 설명]

* 1. 해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑합니다

* 2. 키 해시는 특정 데이터(data)를 해시 함수(hash function)에 입력한 결과로 받은 리턴값을 말합니다

* 3. 사용 이유 - 카카오, 구글 등 API 호출 시 hash key를 통해 인증된 사용자인지 여부를 판단합니다

/* =========================== */

반응형
Comments