문자열 표현이 필요한 경우 Base64와 같은 선택적으로 인코딩합니다. 안드로이드는이 인코딩의 표준 구현을 가지고 있으며, JDK는 버전 8에서만 (느리고 지저분한 구현이기 때문에 가능하면 아파치 커먼스 코덱을 피할 것입니다). 잘 알려진 권장 표준인 AES(고급 암호화 표준)로 데이터를 암호화합니다. AES는 대체 순열 네트워크를 사용하여 키로 데이터를 암호화합니다. 이 방법을 사용하면 한 테이블의 바이트를 다른 테이블의 바이트로 바꿉게 되며, 따라서 데이터의 순열이 생성됩니다. AES사용을 시작하려면 먼저 암호화 키를 만들어야 하므로 그렇게 해 보겠습니다. 안드로이드 7 +에 있는 경우, 당신은 오류 자바.lang.Security예외와 충돌을 얻을 : MODE_WORLD_READABLE 더 이상 지원되지 않습니다, 걱정하지 마십시오. 곧 수정하겠습니다. AEAD(인증된 암호화)와 같은 모드는 암호화되지 않은 기밀 데이터와 추가 관련 데이터(AAD)에 대한 신뢰성 보증을 제공합니다.

(GCM/CCM과 같은 AEAD 및 AEAD 알고리즘에 대한 자세한 내용은 RFC 5116을 참조하십시오.) 인증 태그(Mac과 유사)를 계산할 때 기밀 및 AAD 데이터를 모두 사용할 수 있습니다. 이 태그는 암호화 하는 동안 암호 텍스트에 추가 되 고 암호 해독에 확인 됩니다. 그런 다음 암호를 초기화합니다. AES-GCM 모드는 v2.3보다 최신 의 대부분의 최신 JME및 안드로이드에 사용할 수 있어야합니다 (SDK 21 +에서만 완벽하게 작동하지만). 사용할 수 없는 경우 BouncyCastle과 같은 사용자 지정 암호화 공급자를 설치하지만 기본 공급자가 일반적으로 선호됩니다. 우리는 크기 128 비트 노트의 인증 태그를 선택 : 이 튜토리얼은 이미 안드로이드 개발및 안드로이드 스튜디오의 기본사항에 익숙하다고 가정합니다. 안드로이드 개발이 당신에게 새로운 경우, 먼저 안드로이드 튜토리얼에 대한 시작 안드로이드 개발과 코틀린을 통해 읽어보십시오. 장점은 CBC와 달리 암호화를 병렬로 수행 할 수 있으며 모든 블록은 첫 번째 블록뿐만 아니라 IV에 의존합니다. 큰 주의 사항은 공격자가 사용한 키를 간단하게 계산할 수 있으므로 IV를 동일한 키로 다시 사용해서는 안 된다는 것입니다.

축하합니다, 당신은 암호화 및 안드로이드에 데이터를 해독하는 방법을 배웠습니다! 계정 관리자는 Android OS의 일부이며 해당 API를 가지고 있습니다. 앱이 암호 및 로그인을 직접 저장하거나 작업할 필요가 없도록 사용자 계정 자격 증명에 대한 중앙 관리자입니다. 가장 잘 알려진 예는 OAuth2 토큰을 요청할 때입니다. MainActivity.kt 파일을 엽니다. MODE_WORLD_READABLE 및 MODE_WORLD_WRITABLE에 대한 두 가지 사용 중단 경고가 있음을 알 수 있습니다. 이렇게 하면 이전 Android 버전의 파일에 대한 공개 액세스가 허용됩니다. MODE_WORLD_WRITABLE을 설정하는 줄을 찾아 다음으로 바꿉습니다. 이는 대칭 암호화 알고리즘을 사용하기 때문입니다. 이제 데이터를 암호화하고 해독할 수 있습니다! 이 문서에서는 Android의 암호화 시설을 사용하는 적절한 방법을 설명하고 사용 사례를 포함합니다. 앱에 더 큰 키 보안이 필요한 경우 Android Keystore 시스템을 사용합니다.