AndroidKeyStore 공급자의 경우 null을 매개 변수로 전달하면 시스템이 응용 프로그램 식별자를 기반으로 덮개 아래에 데이터를 로드합니다. Android 앱을 먼저 배포하기 전에 고려해야 할 몇 가지 사항이 있습니다. 가까운 장래에 다른 키로 서명한 동일한 앱을 배포할 수 없습니다. 안드로이드뿐만 아니라 구글 플레이, APK에 대한 업데이트에 대한 동일한 키의 사용을 적용합니다. 어떤 이유로든 다른 키로 앱에 서명해야 하는 경우 새 패키지 이름으로 앱을 배포해야 합니다. 앱이 Google Play에서 가지고 있던 모든 등급은 손실됩니다. 또한 기존 앱이 더 이상 사용되지 않을 것으로 예상하는 방식으로 사용자에게 알리지 않는 한 사용자 기반과의 연락이 끊어질 수 있습니다. 이 문서에서는 사용자 암호 암호화를 사용하여 안전한 Android 앱을 구축하기 위해 이 기술을 실제로 사용하는 방법을 보여 드리며 다른 기술을 통해 암호 보호를 제공하는 이전 Android 버전을 지원합니다. 그리고 안드로이드의 18 버전에서, 안드로이드키 스토어가 도입되었다 : 안드로이드 M 아래,이 샘플은 키 쌍을 생성하기 위해 키 페어 제너레이터 스펙을 사용합니다. 최신 버전의 Android에서는 KeyGenParameterSpec이 추가 제한 및 속성이 있는 키 쌍을 생성합니다. 당신이 당신의 안드로이드 프로젝트를 구축하기 위해 gradle을 사용하는 경우, 당신은 android.signingConfig를 생성하고 하나 이상의 android.buildType와 연결합니다.

APK에 서명하려면 두 암호, 키 저장소 이름 및 별칭 이름이 모두 필요합니다. 적어도 몇 가지 다른 방법으로이 문제를 처리 할 수 있습니다. 가장 간단한 당신의 gradle 빌드 스크립트에 직접 관련 정보를 입력 하는 것입니다.: 또한 우리는 대칭 키 에서 사용할 수 있습니다 알고 23+ API, 그리고 비대칭 에서 18+ API (참조 암호화 에서 안드로이드 (파트 1), 안 드 로이드 키 저장소). 우리의 선택은 예측 할 수 있습니다, 우리는 비대칭 키를 사용하지만, 여전히, 어떤 알고리즘을 선택? 문서에서 도움말을 검색 할 수 있습니다 : 안드로이드 비대칭지문 디아로그, 안드로이드 기본 안드로이드 키스토어, 안드로이드 확인 자격 증명 샘플은 더이 페이지에서 다루는 API의 사용을 보여줍니다. 이 명령을 실행하기 전에 키 저장소 및 키에 대한 강력한 암호를 결정해야 합니다. APK에 서명하려면 이러한 암호가 모두 필요합니다. 이 도구는 이름 및 조직과 같은 일부 메타데이터도 수집하지만 모두 선택 사항입니다. Android 사용자 데이터 보안에 대한 이전 게시물에서는 사용자가 제공한 암호를 통해 데이터를 암호화하는 것을 살펴보았습니다. 이 자습서는 포커스를 자격 증명 및 키 저장소로 이동합니다. 먼저 계정 자격 증명을 도입하고 KeyStore를 사용하여 데이터를 보호하는 예제로 끝납니다. keyStore.aliases()는 키 저장소에서 별칭을 가져오는 것으로 키 저장소가 초기화되지 않은 경우 예외를 throw합니다. 사용 가능한 모든 별칭이 있는 문자열 형식의 열거형을 반환합니다.

사용편의성을 위해 열거를 ArrayList로 바릅니다. 하지만 당신은 반드시 같은 작업을 수행 할 필요가 없습니다, 이것은 단지 내 개인적인 취향이다. 이렇게 하려면 컬렉션 유틸리티 클래스를 사용합니다. 그것은 많은 코드였습니다! 모든 예제를 단순하게 유지하기 위해 철저한 예외 처리를 생략했습니다. 그러나 프로덕션 코드의 경우 throw 가능한 모든 사례를 하나의 catch 문으로 잡는 것은 권장되지 않습니다. 우리가 시작하기 전에 안드로이드 키 스토어 시스템에 대한 몇 가지 를 취소 할 수 있습니다.