Этот фрагмент кода был предназначен для сбоя , если шифрование было выполнено на одном устройстве, а дешифрование выполняется на другом устройстве. Если Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)
возвращает другую строку, то параметр salt
в конструкторе PBEParameterSpec
будет другим.
Как только соль будет другой, из пароля будет вычислен другой ключ, и ваша расшифровка будет с вероятностью , что приведет к сбою с исключением, связанным с заполнением. Соль - это , используемая для создания другого значения, даже если пароли идентичны (при использовании только идентификатор довольно глуп, поскольку использование одного и того же идентификатора приведет к одинаковым паролям, даже в разных приложения).
Если дешифрование не завершится неудачей, кстати, вы получите открытый текст для мусора.
В коде вопроса есть бесконечные проблемы, например, использование одного DES, счетчика 20 итераций и неаутентифицированного шифрования. Я мог бы опубликовать длинный обзор страницы, но вместо этого я призываю вас прочитать книгу о современной криптографии и пересмотреть свой протокол как можно скорее.