Here is an easy way to secure your sensitive data on Android
implementation 'androidx.security:security-crypto:1.1.0-alpha02'
class EncryptSharedPreferences constructor(context: Context) {
var sharedPreferences: SharedPreferences
init {
val masterKey = MasterKey.Builder(context)
.setKeyScheme(KeyScheme.AES256_GCM)
.build()
sharedPreferences = EncryptedSharedPreferences.create(
context,
"encrypted_data",
masterKey,
AES256_SIV,
AES256_GCM
)
}
companion object : SingletonHolder<EncryptSharedPreferences, Context>(::EncryptSharedPreferences)
}
val numPadListener = object : NumPadListener {
override fun onNumberClicked(number: Char) {
val existingPinCode = pinCode.value ?: ""
val newPassCode = existingPinCode + number
pinCode.postValue(newPassCode)
// Add this block into PinCodeViewModel.kt.
if (newPassCode.length == 6) {
sharedPreferences.edit().run {
putString(PIN_CODE_KEY, newPassCode)
apply()
}
val pinCodeInSharedPreference = sharedPreferences.getString(PIN_CODE_KEY, "")
securedPinCode.postValue(pinCodeInSharedPreference)
pinCode.postValue("")
}
}
....
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="PIN_CODE_KEY">123456</string>
</map>
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="__androidx_security_crypto_encrypted_prefs_value_keyset__">08d983858f0512640a580a30747970652e676f6f676c65617069732e636f6d2f676f6f676c652e63727970746f2e74696e6b2e41657347636d4b657912221a2090d93b859ce9ac5d6b3a10eaa3ab74652126d271d5460ee96e1f75761dae9c5a1801100118d983858f052001</string>
<string name="__androidx_security_crypto_encrypted_prefs_key_keyset__">08ddebdd9b021284010a780a30747970652e676f6f676c65617069732e636f6d2f676f6f676c652e63727970746f2e74696e6b2e4165735369764b65791242124063f24cf3d31278b54f26d9402f38b694efcf8db81eeeeb28e82bd059ccb88fe7ff3b6b191429e4a503291ef84378a688c9286074df5780f00254e40e7bcebf1b1801100118ddebdd9b022001</string>
<string name="ASN3dd30XLWQ87WqUN7/2k86i9gqavinCOsSI/Z9PHtW">AVHhQdnK7HMmfAZBi7YvUVo4Aoag/PZfegudqqZJUfA/9Qp6ZUdA0PsvEDfU1Q4=</string>
</map>
From us to your inbox weekly.