티스토리 뷰
반응형
Security Library를 사용하여 SharedPreference를 암호화할 수 있습니다.
기본 SharedPreference 사용하기
PreferenceManager.kt
class PreferenceManager(context: Context) {
private val pref = PreferenceManager.getDefaultSharedPreferences(context)
fun getData(key: String): String? = pref.getString(key, null)
fun setData(key : String, value : String) = pref.edit().putString(key, value).commit()
}
PreferenceManger라는 SharedPreference를 사용할 수 있도록 해주는 Class를 만들었습니다.
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val pref = PreferenceManager(this)
button.setOnClickListener {
pref.setData("data", editText.text.toString())
textView.text = editText.text.toString()
}
textView.text = pref.getData("data") ?: ""
}
}
MainActivity에서는 PreferenceManger Class를 사용하여 값을 저장하고 불러오는 코드를 작성하였습니다.
실행하면 아래와 같이 동작합니다.
SharedPreference는 앱 내부 데이터에 값을 저장합니다.
저장된 SharedPreference 확인하기
앱을 빌드를 하고 View > Tool Windows > Device File Explorer를 누릅니다.
그리고 아래 경로에서 확인하면 됩니다.
data/data/(package_name)/shared_prefs/SharedPreference
값이 저장되어 있는 것을 확인할 수 있습니다.
Security Library 사용하기
Security Library는 마시멜로 ( sdk 23 ) 이상부터 사용 가능합니다.
build.gradle에 아래 코드를 추가해줍니다.
dependencies {
...
implementation "androidx.security:security-crypto:1.1.0-alpha02"
}
그리고 PreferenceManager 클래스의 pref 변수를 아래와 같이 수정해주면 됩니다.
private val pref: SharedPreferences by lazy {
val keyGenParameterSpec = MasterKeys.AES256_GCM_SPEC
val masterKeyAlias = MasterKeys.getOrCreate(keyGenParameterSpec)
EncryptedSharedPreferences.create(
"여기에 원하는 파일 이름",
masterKeyAlias,
context,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
}
실행을 하고 테스트를 하면 아래와 같이 값이 암호화되어 저장됩니다.
반응형
'알려주는 이야기 > 안드로이드' 카테고리의 다른 글
안드로이드 이미지 bitmap 인코딩, 디코딩 처리 (0) | 2020.08.29 |
---|---|
Activity, Fragment 의 라이프사이클 (0) | 2020.08.29 |
안드로이드 Keystore 정보 숨기기 (1) | 2020.08.28 |
안드로이드 Bottom Navigation View 예제 (0) | 2020.08.24 |
안드로이드 http 통신 (0) | 2020.08.23 |
댓글