2012-03-19 2 views
2

나는 안드로이드 라이브러리를 가지고 있습니다. 유효한 사용자 만이 라이브러리를 사용하는지 확인하는 함수를 추가해야합니다. 이를 위해서는 안드로이드 키 스토어에서 값을 읽어야합니다. 어떻게하면 안드로이드 키 스토어에서 값을 읽을 수 있습니까?키 저장소 값을 읽는 방법?

+0

'android keystore'는 무엇을 의미합니까? 인증서 트러스트 스토어? 너 정확히 뭘 하려구? –

+0

시장에 업로드하기 전에 apk 파일에 서명하는 데 사용하는 .keystore 파일을 언급하고 있습니다. – Chrishan

+0

OK,하지만 무엇을하려고합니까? 이 파일은 개발자 워크 스테이션에만 존재하며 앱에 포함되지 않습니다. 앱에서 서명 인증서를 얻을 수는 있지만 올바른 사용자를 식별하는 데 도움이되지 않습니다. 당신의 접근 방식에 대한 더 자세한 정보를 제공하십시오. –

답변

0

'PacakgeInfo.signatures'을 사용하면 앱의 서명 인증서를 얻을 수 있습니다. 일반적으로 하나의 서명 만 있으므로 인증서를 제공해야합니다 ('서명'이라고도 함에도 불구하고 인증서를 보유합니다). BLOB의 SHA1 등을 취하여 비교를 위해 지문을 가질 수 있습니다.

PackageInfo pi = packageManager.getPackageInfo(getPackageName()); 
byte[] certificate = pi.signatures[0].toByteArray(); 
MessageDigest md = MessageDigest.getInstance("MD5"); 
byte[] fingerprint = md.digest(certificate); 
String hexFingerprint = toHexString(fingerprint); 

물론이 검사가 작동하려면 라이브러리에 지문을 삽입해야합니다. 그것을 디 컴파일하고 지문을 교체하는 것은 아주 쉽다는 것을 명심하십시오.

+0

어떻게하면 되나요? 인증서 지문 (MD5) : 94 : 1E : 43 : 49 : 87 : 73 : BB : E6 : A6 : 88 : D7 : 20 : F1 : 8E : B5 : 98 – Chrishan

+0

' MessageDigest' 클래스를 사용하여 지문을 계산합니다. 그런 다음 16 진수 문자열로 변환 할 수도 있습니다. 업데이트 된 답변보기 –