안드로이드 해시키 얻기에 대한 질문
조회수 3265회
PackageInfo info = ctx.getPackageManager().getPackageInfo(getAppPackageName(ctx), PackageManager.GET_SIGNATURES);
위의 명령문이 의미하는것이 앱의 고유한 사인값을 가져오는것 아닌가요?
제가 이해한게 잘못된건가요?
가져온 사인값으로 md암호화해서 aes의 비밀키로 사용할 요량이었는데...
어째 프로젝트에 저 함수만 있으면 모두 같은 결과값을 반환해서...멘붕이네요;;
암호화 하는부분은 이해를 했는데 위의 두줄이 제가 이해를 잘못하고 있는것 같아 여쭤봅니다요.
고수님들~ 답변 주시면 감사하겠습니다.
아래는 어느분이 만들어놓은 해시키 가져오기 함수의 전문입니다.
/**
- 해시키 가져오기
*/
public static String getPackageHashKey(Context ctx) {
try {
PackageInfo info = ctx.getPackageManager().getPackageInfo(getAppPackageName(ctx), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
return Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (PackageManager.NameNotFoundException ex) {
ex.printStackTrace();
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
개념은 제대로 이해한 게 맞습니다. 다만 모두 같은 값을 반환해서 멘붕이라고 하셨는데요. 이 부분은 그럴 수도 있습니다. 만일 A APK, B APK에서 같은 값이 나온다면 두 프로젝트는 같은 키로 서명을 한 것입니다.
특별한 설정을 하지 않았다면 IDE가 생성한 디버그 키로 서명을 하기 때문에 같은 결과가 나옵니다. 따라서 디버그 모드로 빌드한 것은 아닌지 확인해 볼 필요가 있고요. 릴리즈 빌드에서도 같은 릴리즈 키로 서명을 했다면 올려주신 코드의
getPackageHashKey()
함수는 같은 값을 반환하게 됩니다.-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력