Есть много опубликованных отчетов о том, что в старых версиях Android нам нужно предоставить собственный вектор инициализации SecureRandom
-based, поскольку по умолчанию они не являются случайными:
- Создание IV для AES в Java
- https://medium.com/@tiensinodev/basic-android-encryption-dos-and-don-ts-7bc2cd3335ff
- https://tozny.com/blog/encrypting-strings-in-android-lets-make-better-mistakes/
- API криптографии Android не генерирует безопасный IV для AES
И наоборот, с уровня API 23, если вы попытаетесь предоставить свой собственный IV, вам также необходимо вызвать setRandomizedEncryptionRequired(false)
в KeyGenParameterSpec.Builder
, так как в противном случае вы получаете KeyGenParameterSpec.Builder
, KeyGenParameterSpec.Builder
при KeyGenParameterSpec.Builder
IV, которое не разрешено при шифровании.
Предположительно, где-то вдоль линии Android перешел от "ужасного" к "достаточно хорошему" с точки зрения IV поколения.
Что такое обрезание, ниже которого мы должны генерировать свой собственный IV против использования Android, генерируемого IV?