Я пытаюсь зашифровать / расшифровать некоторые строковые данные. Я использую Cipher. Мне было интересно, если необходимо использовать IV для шифрования данных. Если вы можете использовать Cipher без IV, то как это сделать?
Я получил некоторый код здесь: Вот код для шифрования данных:
fun encrypt(cipher: Cipher, plainText: ByteArray): String {
val enc = cipher.doFinal(plainText)
return Base64.encodeToString(
enc,
Base64.DEFAULT
) + separator + Base64.encodeToString(
cipher.iv,
Base64.DEFAULT
)
}
А вот код для расшифровки:
fun decrypt(cipher: Cipher, encrypted: String): String {
return cipher.doFinal(
Base64.decode(
encrypted,
Base64.DEFAULT
)
).toString(Charsets.UTF_8)
}
Инициализация дешифрования:
cipherDec.init(
Cipher.DECRYPT_MODE, key, IvParameterSpec(
Base64.decode(
IV.toByteArray(Charsets.UTF_8),
Base64.DEFAULT
)
)
Инициализация шифрования:
cipherEnc.init(Cipher.ENCRYPT_MODE, key)