반응형
안드로이드에서 EncryptedSharedPreferences를 간단히 말하면
암호화된 SharedPreference를 의미한다.
그렇기 때문에 사용 방법 또한 기존의 SharedPreference와 유사하다.
EncryptedSharedPreferences는 주로 토큰 같은 정보를 저장할 때 사용된다.
Dependency 추가
안드로이드에서 EncryptedSharedPreferences를 사용하기 위해서는
다음과 같은 dependency를 추가해야한다.
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()
}
반응형
'안드로이드(kotlin)' 카테고리의 다른 글
DiffUtil를 BaseAdapter로 하여 쉽게 RecyclerView만들기 (1) | 2023.11.12 |
---|---|
Unsupported Java. Your build is currently configured to use Java 20.0.1 and Gradle 8.0. (0) | 2023.05.31 |
안드로이드 앱 파일 만들기(APK) (0) | 2023.04.26 |
MVVM에서 viewModel 이벤트를 받을 수 있는 방법-3 (0) | 2023.04.01 |
MVVM에서 viewModel 이벤트를 받을 수 있는 방법-2 (0) | 2023.03.30 |
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글