Cara melindungi data pada SharedPreferences

Ian Christian Adolfian Damping
2 min readFeb 16, 2021
Image by www.whatmobile.net

Pada materi kali ini saya ingin berbagi cara untuk melindungi data yang disimpan pada SharedPreference dengan Encryption.

Encryption sendiri adalah teknik dalam kriptografi untuk mengaburkan informasi supaya sulit untuk dibaca oleh orang lain dengan menggunakan algoritma tertentu.

Nah sekarang bagaimana cara melindungi data pada SharedPreference ? caranya terbagi menjadi 2 yaitu menggunakan EncryptedSharedPreferences dan SecurePreference.

Apa perbedaan nya ?

  • EncryptedSharedPreferences merupakan bagian dari Jetpack Library Security tetapi hanya bisa di gunakan Android versi 5.0 ke atas
  • SecurePreference merupakan library yang di buat oleh scottyab dan bisa di gunakan Android versi 5.0 ke bawah

EncryptedSharedPreferences

Pertama kita perlu menambahkan library nya

implementation "androidx.security:security-crypto:1.1.0-alpha03"

Pada waktu tulisan ini dibuat versi terbaru nya adalah 1.1.0-alpha03

Untuk menggunakannya kita perlu MasterKey.
Untuk create MasterKey kita memerlukan KeyGenParameterSpec yang di build seperti ini :

private fun getMasterKey(context: Context): MasterKey {
val spec = KeyGenParameterSpec.Builder(
MasterKey.DEFAULT_MASTER_KEY_ALIAS,
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.setKeySize(256)
.build()

return MasterKey.Builder(context)
.setKeyGenParameterSpec(spec)
.build()

}

Kemudian untuk create EncryptedSharedPreferences nya akan seperti ini

private fun provideEncryptedSharedPreferences(application: Context): SharedPreferences {
return EncryptedSharedPreferences.create(
application,
SHARED_PREF_INIT,
getMasterKey(application),
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
}

SHARED_PREF_INIT adalah nama yang akan kita berikan untuk SharedPreferences nya.

SecurePreference

Pertama kita perlu menambahkan library nya

implementation 'com.scottyab:secure-preferences-lib:0.1.7'

Untuk penggunaannya cukup mudah kita hanya perlu create SecurePreference seperti ini

val prefs: SharedPreferences = SecurePreferences(context)

Ohiya untuk SecurePreference sendiri statusnya sudah Deprecated karena sudah tidak di maintenance.
Jadi kalau minSdkVersion temen temen adalah 23 atau Android versi 5.0 di sarankan menggunakan EncryptedSharedPreference.

Demo

Data yang ingin saya simpan adalah String simpel seperti ini

const val SHARED_PREF_INIT = "shared pref init"
const val SAVING_PREFERENCE = "Data Pref"

Bila kita tidak menggunakan enkripsi, data yang kita simpan dalam SharedPreference akan terlihat jelas seperti ini

UnencryptedSharedPref

Jika kita menggunakan enkripsi, data yang kita simpan dalam SharedPreference akan terlihat seperti ini

EncryptedSharedPref

Okay dari demo di atas kita bisa melihat betapa berguna nya enkripsi terutama bila kita ingin menyimpan data data sensitif.

Baik itu saja yang bisa saya sampaikan tentang materi kali ini, saya bersyukur bila materi yang saya sampaikan bisa membantu temen-temen.
Sampai jumpa lagi !

--

--

Ian Christian Adolfian Damping

Always curious and always want to continue learning in many ways