-
터미널에서 안드로이드 키 해시 구하기 (Windows)Android 2022. 8. 29. 10:55
keytool
jdk\bin 폴더에는 해시키를 생성할 수 있는 keytool이라는 프로그램이 들어있다. 이를 이용해 터미널에서 키 해시를 획득할 수 있다.
keytool 사용 환경
1. jdk\bin 디렉토리 환경변수 path에 등록
2. OpenSSL 설치
https://code.google.com/archive/p/openssl-for-windows/downloadsGoogle Code Archive - Long-term storage for Google Code Project Hosting.
code.google.com
2-1. openssl\bin 디렉토리 환경변수 path에 등록
키 해시 구하기
// 디버깅 키 해시 keytool -exportcert -alias androiddebugkey -keystore .\app\keystore\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64 // 릴리즈 키 해시 keytool -exportcert -alias {key alias} -keystore {key 경로} | openssl sha1 -binary | openssl base64
Hash Key란?
오픈 API를 사용하려면 해시키를 등록해야 하고, Hash Key가 등록된 앱만 SDK를 이용해 API를 호출할 수 있다.
키 해시는 특정 데이터를 해시 함수(hash function)에 입력한 결과로 받은 리턴 값을 말한다.
해시 함수
해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다.
- 데이터의 길이가 랜덤해도 리턴값의 길이는 일정하다.
- 입력값이 같으면 리턴값도 언제나 동일하다.
Key Hash의 활용
API Provider(카카오, 구글 등)는 민감한 정보일 수도 있는 앱의 사이닝 키(signing key)값이 아닌 그 값을 해시한(특히 SHA-1 함수를 통해) hash key를 통해 인증된 사용자인지 여부를 판단합니다. 해시를 통한 사용자 인증의 장점은 해시값이 노출되어도 피해가 전혀 없다는 것입니다. 해시값만 가지고는 원본 데이터를 추론할 수 없기 때문입니다. 따라서 hash key가 노출되어도 입력값인 signing key는 안전합니다.
그럼 API Provider는 왜 해시가 등록된 앱에 대해서만 API 요청을 허용하는 것일까요? 그 이유는 바로 무분별한 트래픽을 방지하기 위해서입니다. 일반적으로 무료로 공개되어있는 API는 하루 1천 건, 2천 건 등의 요청수 제한을 두고 있습니다. 또한 제한이 있는 무료 사용자와 요청 제한이 없는 유료 사용자를 구분하는 용도로도 쓰일 수 있습니다.
출처: https://manorgass.tistory.com/76 [생각하는 개발자:티스토리]OpenSSL이 필요한 이유
해시된 키의 binary값을 Base64 인코딩으로 표현한 값이 필요하기 때문이다.