반응형

이번 포스팅은 Android KeyChain을 사용하여 대칭키를 안전하게 저장하는 방법에 대하여 알아보도록 하겠습니다.

 

Android KeyChain API를 사용하여 대칭 키를 저장하는 안전한 방법은 다음과 같습니다.

 

 

Part 1.  Key 생성 및 저장


 

1. 대칭키를 생성합니다.
2. Android Keystore에서 비대칭키를 생성합니다.
3. 2번에서 생성한 비대칭키의 공개키(Public Key) 사용하여 대칭키를 암호화합니다. 

    encrypted_symmetric_key = public_encrypt (symmetric_key)

4. 앱 내에 암호화된 대칭키를 저장합니다.

 

Part.2  대칭키를 사용 


 

원문을 암복호화할 경우에 사용합니다.

1. Android KeyStore에서 비 대칭키의 개인키(PrivateKey)를 메모리로 로드합니다.
2. 앱 내에 암호화된 대칭키를 디스크에서 로드합니다.
3. 1번에서 로드한 개인키(PrivateKey)로 암호화된 대칭키를 복호화합니다.

    symmetric_key = private_decrypt (encrypted_symmetric_key)

4. 복호화된 대칭키로 원문을 암호화 나 복호화를 진행합니다.

 

Reference

https://codeday.me/ko/qa/20190503/453287.html

반응형
반응형

이번 포스팅은 Android Build 오류에 대하여 알아보도록 하겠습니다.


< Error> 

This Handler class should be static or leaks may occur (anonymous android.os.Handler)


< Solution > 


1. Handler class는 object가 아니라 static class로 선언이 되어야 하는데 그러지 않아서 오류가 발생하는 것입니다.

2. 여기서 한 가지....

   나는 Handler를 아래와 같이 static 으로 선언하였는데 왜 이런 오류가 계속 뜨는 거지?


public static final Handler myHandler = new Handler() {

public void handleMessage(Message msg) {

    .........
}
}


3. 원인 : Handler 객체는 변수로써 static으로 선언하였지만 내부에 있는 익명의 클래스는 static이 아니기 때문에 계속 오류가 발생하는 것입니다.


4. 해결: Handler 객체를 상속받은 새 static 클래스를 만든 후 Logic을 여기서 구현하시면 됩니다.

 // 변수로 Handler 선언
private Handler mHandler = new EunHandler();


private static class EunHandler extends Handler {
public void handleMessage(Message msg) {

// ..................
         // Logic 구현

// ..................
}
};


반응형
반응형

이번 포스팅은 Android Build 오류에 대하여 알아보도록 하겠습니다.


< Error>


WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.

It will be removed at the end of 2019.

For more information, see https://d.android.com/r/tools/task-configuration-avoidance.

REASON: It is currently called from the following trace:


< Solution >


1. 'com.google.gms:google-services:4.3.0'에서 오류가 발생하였습니다.

   gms 라이브러리 내부적으로 발생하는 오류로써 향후 수정이 되어 배포될 것입니다.

2. 임시방편으로 build.gradle의 gms 라이브러리 버전을 downgrade 하여 아래와 같이 수정하면 오류 없이 정상적으로 Build가 될 것 입니다.

dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath 'com.google.gms:google-services:4.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}


반응형

+ Recent posts