K2
Size: a a a
K2
NK
М
V
М
V
V
М
М
V
V
М
V
V
NK
IT
IK
IK
NK
// generate key
keyStore.load(null)
if (!keyStore.containsAlias(KEY_ALIAS)) {
var keyGenerator: KeyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, AndroidKeyStore)
keyGenerator.init(KeyGenParameterSpec.Builder(KEY_ALIAS, KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT).setBlockModes(KeyProperties.BLOCK_MODE_GCM).setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE).setRandomizedEncryptionRequired(false).build())
keyGenerator.generateKey()
}
// encrypt
var c: Cipher = Cipher.getInstance(AES_MODE)
c.init(Cipher.ENCRYPT_MODE, keyStore.getKey(KEY_ALIAS, null), GCMParameterSpec(128, FIXED_IV))
var encodedBytes: ByteArray = c.doFinal("CLEAN STRING".toByteArray(charset("UTF-8")))
return Base64.encodeToString(encodedBytes, Base64.DEFAULT)
// decrypt
var encrypted = Base64.decode("ENC STR", Base64.DEFAULT)
var c: Cipher = Cipher.getInstance(AES_MODE)
c.init(Cipher.DECRYPT_MODE, keyStore.getKey(KEY_ALIAS, null), GCMParameterSpec(128, FIXED_IV))
return String(c.doFinal(encrypted))
NK