Android javax.crypto.BadPaddingException блок панели поврежден на Android 7 и 8 - PullRequest
0 голосов
/ 04 марта 2019

Я вижу некоторые исключения в работе, которые случаются только с некоторыми конкретными пользователями (10 пользователей за последний месяц из 100 000+ активных пользователей в месяц)

В моих методах шифрования и дешифрования используются одни и те же алгоритмы, и все, и вседругие пользователи не сталкиваются с такими проблемами

private byte[] encrypt(String cleartext) {
    final Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(secretKey, "AES"));
    return cipher.doFinal(cleartext.getBytes("UTF-8"));
}

private String decrypt(byte[] cipherbytes)  {
    final Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secretKey, "AES"));
    return new String(cipher.doFinal(cipherbytes), "UTF-8");
}

private static String encode(byte[] input) {
    return Base64.encodeToString(input, Base64.NO_PADDING | Base64.NO_WRAP);
}

private static byte[] decode(String input) {
    return Base64.decode(input, Base64.NO_PADDING | Base64.NO_WRAP);
}

// these methods are exposed
String encryptAndEncodeMessage(String message) {
    return encode(encrypt(message))
}

String decryptAndDecodeMessage(String encodedEncryptedMessage) {
    return decrypt(decode(encodedEncryptedMessage))
}

secretKey создается только один раз и сохраняется в общих префиксах, поэтому он гарантированно будет таким же

Что может вызвать это исключение дляпоявляются только для некоторых пользователей, а на сома конкретных устройствах?Я вижу в журналах только Huawei Mate 9 (MHA-L09) Android 7 и Huawei P20 Lite (ANE-LX1) Android 8

Может быть, это какая-то попытка взломать зашифрованное хранилище?Или какая-то ошибка в логике шифрования?Меня смущает небольшое количество таких сбоев, так как если бы была ошибка, это затронуло бы большее количество пользователей

...