📱Mobile/React Native

[React Native] Hash Key 발급

뉴발자 2023. 3. 20.
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hash Function

 

 

React Native에서 Kakao Login 기능을 개발하던 중 Hash Key를 입력해야 하는 상황에 맞딱뜨렸고 발급하는 방법에 대해 찾아보고 정리해보려고 한다.

 


Hash Key란?

 

해시라는 것은 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑하는 것을 말한다.

 

이 과정에서 원본 데이터를 키(Key), 매핑하는 과정을 해싱(Hashing), 결과물로 나온 데이터를 해시 값(Hash value)라고 한다.

 

또한 이렇게 데이터를 해싱하는 함수를 해시 함수(Hash Function)이라고 한다.

 

대표적인 해시 함수에는 MD-5, SHA 함수가 있다.

 

 

MD-5

MD는 Message Digest의 약자로, 입력된 데이터를 각 512비트의 블록들로 나누어 처리하여 128 비트 길이의 해시 값을 출력하는 함수이다.

 

1996년, 2004년 당시 MD5의 결함들이 발견되었고, 2006년에는 노트북 한 대의 연산 능력으로 1분 안에 충돌을 발견할 수 있는 알고리즘이 개발되었다.

 

현재는 MD-5를 보안을 위해 사용되는 것은 권장되지 않는다.

 

 

SHA

SHA는 Secure Hash Algorithm의 약자로, 입력 데이터를 나누는 블록의 크기, 계산되는 해시 값의 크기, 최대 입력 데이터 길이, 단계 수 등이 다른 여러 가지의 버전이 있다.

 

SHA-1의 경우 이미 보안상 취약점이 발견되어 사용하는 것을 권장하지 않고, SHA-256 또는 SHA-512를 사용하는 것이 권장된다.

 


 

Hash에 대해 더욱 자세한 내용을 알고싶다면 아래의 사이트를 참고하면 된다.

 

 

참고 사이트

https://angangmoddi.tistory.com/m/289

 

해시(Hash)란?

Hash? 해시라는 것은 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 것을 말한다. 이 과정에서 원본 데이터를 키(Key), 매핑하는 과정을 해싱(Hashing), 결과물로 나온 데이터를

angangmoddi.tistory.com

 

 

 

우선 Hash Key를 발급 받으려면 Open SSL이 설치되어 있어야 한다.

 

 

Open SSL 설치 사이트

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

 

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

Minimum system requirements: Windows XP or later 32MB RAM 200MHz CPU 30MB hard drive space Recommended system requirements: Windows XP or later 128MB RAM 500MHz CPU 300MB hard drive space March 14, 2023 - OpenSSL 3.1 is available. Also, Happy Pi Day. Users

slproweb.com

 

 

위의 사이트에 접속해서 최신 버전의 OpenSSL.exe 파일을 다운로드 후 설치해주면 된다.

 

 

그림 1-1. Open SSL Download

 

 

Mobile App에서 API를 사용하기 위해선 두 개의 Hash Key가 필요하다.

 


Debug Hash Key

 

Android Studio를 설치하면 기본적으로 제공되는 debug.keystore 파일에서 발급받을 수 있다.

C:\사용자\사용자명\.android

그림 1-2. debug.keystore 파일 위치

 

 

명령 프롬프트(cmd)를 키면 기본 경로가 아래와 같이 설정되어 있을 것이다.

 

C:\Users\사용자명 >

 

위의 경로에서 아래의 명령어를 입력해주면 Debug Hash Key가 나오게 된다.

 

keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64

 

 

! 하지만 아래와 같은 에러가 발생되었다.

 

 

그림 2-1. CMD Error

 

Open SSL가 제대로 설치되었음에도 불구하고 openssl 을 찾지 못해서 에러가 발생되었다.

 

블로그를 여러 군데 뒤져보던 중 OpenSSL의 경로를 명확하게 입력하면 된다는 글을 찾았고 그대로 실행해 봤지만 이번엔 아래와 같은 에러가 발생하였다.

 

그림 2-2. CMD Error

 

 

블로그를 찾아보았지만 나와 같은 에러가 발생한 글을 찾지 못하였다.

 

명령어를 보던 중 Open SSL 경로 중 Program Files에 공백이 있어서 그런거지 않을까? 라는 생각이 들었다.

 

그래서 OpenSSL-Win64 폴더를 Program Files폴더가 아닌 C드라이브 안에 넣어준 후 아래의 명령어를 실행했고 정상적으로 Hash Key가 생성되었다.

 

keytool -exportcert -alias [생성한 KeyStore의 Alias] -keystore [생성한 KeyStore의 경로] | openssl sha1 -binary | openssl base64

 

그림 2-3. Open SSL 폴더 경로

 

그림 2-4. Debug Hash Key 생성

 

 

 

 

Release Hash Key

 

1. Keystore 파일 생성

 

Release Hash Key를 발급 받으려면 먼저 keystore 파일을 하나 생성해야 한다.

 

명령 프롬프트에서 아래의 명령어를 실행해준다.

keytool -genkeypair -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

 

생성될 keystore명과 alias는 임의대로 바꿔서 생성해주면 된다.

 

나오는 항목들을 아래와 같이 입력해주고 마지막으로 y를 입력하면 keystore 파일이 생성된다.

 

키 저장소 비밀번호 입력: (6자리 이상, 화면에는 안보이지만 입력하고 Enter를 누르면 알아서 입력됩니다.)
새 비밀번호 다시 입력: (비밀번호 재입력)
이름과 성을 입력하십시오.
  [Unknown]:  이름
조직 단위 이름을 입력하십시오.
  [Unknown]:  아무거나 입력하면 넘어갑니다.
조직 이름을 입력하십시오.
  [Unknown]:  아무거나 입력하면 넘어갑니다.
구/군/시 이름을 입력하십시오?
  [Unknown]:  '시'만 입력해도 됩니다.
시/도 이름을 입력하십시오.
  [Unknown]:  '도'만 입력해도 됩니다.
이 조직의 두 자리 국가 코드를 입력하십시오.
  [Unknown]:  KR
CN=이름, OU=조직 단위, O=조직 이름, L=구/군/시, ST=시/도, C=KR이(가) 맞습니까?
  [아니오]:  y

 

설정된 프롬프트 경로로 들어가면 keystore 파일이 생성된 것을 확인할 수 있다.

 

그림 3-1. keystore 파일 생성

 

 

 

2. 경로 설정 및 Hash Key 발급

 

생성한 keystore 파일을 아래의 경로로 옮겨준다.

<React Native Project Folder>/android/app/

그림 3-2. keystore 파일 위치

 

그리고 명령 프롬프트 창을 열어서 아래의 코드를 입력해주면 Release Hash Key가 생성된다.

keytool -exportcert -alias release -keystore <Project 폴더 경로>\android\app\my-upload-key.keystore -storepass android -keypass android | C:\OpenSSL-Win64\bin\openssl sha1 -binary | C:\OpenSSL-Win64\bin\openssl base64

 

그림 3-3. Release Hash Key 생성

 

! 폴더 경로를 정확하게 입력하지 않으면 다른 Hash Key가 생성될 수 있으므로 경로를 잘 확인한 후 실행해야 한다.

 

 

 

 

3. Release Hash Key 설정

 

android/gradle.properties 파일에 아래의 코드를 추가해준다.

MYAPP_RELEASE_STORE_FILE=my-upload-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=비밀번호
MYAPP_RELEASE_KEY_PASSWORD=비밀번호

 

 


 

 

 

 

 

 

 

 

참고 사이트

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=93kwiyoung&logNo=220360854080 

 

[OpenSSL] 'openssl'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다

명령프롬프트(cmd)를 켜서 해시키를 확인할 수 있다. 보통 keytool -exportcert -alias testkey -keystore ...

blog.naver.com

 

https://ssilook.tistory.com/entry/React-Native-RN-APK-%EC%B6%94%EC%B6%9C%ED%95%98%EA%B8%B0-3%ED%8E%B8AAB-%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1

 

[React Native] RN - APK 추출하기 3편(AAB 파일 생성)

안녕하세요. 이번 시간에는 React Native APK 추출할 때 용량도 줄이고, 구글 콘솔에 업로드를 시킬 수 있는 aab 파일을 생성하는 방법에 대해서 알아보도록 하겠습니다. 키 생성 my-upload-key과 my-key-alia

ssilook.tistory.com

 

https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android#add-key-hash

 

Kakao Developers

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

developers.kakao.com

 

https://itstudy-mary.tistory.com/376

 

카카오 API, Android] 키 해시 부여받기

카카오 API를 사용할때, 안드로이드 개발자이며 막 개발을 시작한 사람들의 머리를 부여잡게 하는 골치아픈 문제가 있다. 바로 키 해시.............. 근데 개발자인 나도 헛갈림 ㅠㅠㅠㅠㅋㅋㅋㅋ

itstudy-mary.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

댓글