본문 바로가기
안드로이드(kotlin)

안드로이드 코틀린 EncryptedSharedPreferences 사용 방법

by 기계공학 주인장 2023. 5. 28.
반응형

안드로이드에서 EncryptedSharedPreferences를 간단히 말하면

 

암호화된 SharedPreference를 의미한다.

 

그렇기 때문에 사용 방법 또한 기존의 SharedPreference와 유사하다.

 

EncryptedSharedPreferences는 주로 토큰 같은 정보를 저장할 때 사용된다.


Dependency 추가

안드로이드에서 EncryptedSharedPreferences를 사용하기 위해서는 

 

다음과 같은 dependency를 추가해야한다.

 

 

보안  |  Android 개발자  |  Android Developers

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 보안 키를 안전하게 관리하고 파일 및 sharedpreference를 암호화합니다. 이 표에는 androidx.security 그룹의 모든 아

developer.android.com

implementation 'androidx.security:security-crypto-ktx:1.1.0-alpha04'

EncryptedSharedPreferences 를 사용해서 CRUD 구현하기

기본적인 사용 방법은 일반적인 SharedPreference와 동일하다.

 

먼저 EncryptedSharedPreferences를 초기화해야한다.

EncryptedSharedPreferences 초기화 하기
object TokenStore {
    private const val TOKEN_KEY = "token"
    private const val PREFERENCE_NAME = "encrypted_preferences"

	// EncryptedSharedPreferences 초기화
    private fun getSharedPreferences(context: Context): SharedPreferences {
        val masterKey = MasterKey.Builder(context)
            .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
            .build()

        return EncryptedSharedPreferences.create(
            context,
            PREFERENCE_NAME,
            masterKey,
            EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
            EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
        )
    }
}

 

EncryptedSharedPreferences 안에 데이터를 저장하고 가져오는 방법은 다음과 같다.

 

EncryptedSharedPreferences를 사용해서 데이터를 저장하고 가져오기
// 데이터 저장하기
fun saveToken(context: Context, token: String) {
    val sharedPreferences = getSharedPreferences(context)
    with(sharedPreferences.edit()) {
        putString(TOKEN_KEY, token)
        commit()
    }
}

// 데이터 가져오기
fun getToken(context: Context): String {
    val sharedPreferences = getSharedPreferences(context)
    return sharedPreferences.getString(TOKEN_KEY, "") ?: ""
}

 

EncryptedSharedPreferences를 삭제하는 방법도 SharedPreference와 동일하다.

 

EncryptedSharedPreferences 삭제하기
// EncryptedSharedPreferences 제거하기
fun removeToken(context: Context) {
    val sharedPreferences = getSharedPreferences(context)
    with(sharedPreferences.edit()) {
        remove(TOKEN_KEY)
        apply()
    }
}

 

위 코드를 다음과 같은 방법으로 사용할 수 있다.


EncryptedSharedPreferences 사용하기

 

Activity, Fragment 둘 다 동일한 방법으로 사용할 수 있다.

 

Activity 또는 Fragment에서
// EncryptedSharedPreferences로 데이터 저장하기
binding.freeButton1.setOnSingleClickListener {
    Timber.d("clicked time: ${Calendar.getInstance()}")
    TokenStore.saveToken(requireContext(), "secret")
    Toast.makeText(requireContext(), "Encrypted data is saved", Toast.LENGTH_SHORT).show()
}

// EncryptedSharedPreferences에 저장된 데이터 가져오기
binding.freeButton2.setOnSingleClickListener {
    Timber.d("clicked time: ${Calendar.getInstance()}")
    val decryptedData = TokenStore.getToken(requireContext())
    Toast.makeText(requireContext(), "decryptedData is $decryptedData", Toast.LENGTH_SHORT).show()
}

 

반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글