我看到生产中的一些例外情况只发生在某些特定用户身上(上个月有 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
会不会是某种破解加密存储的尝试?还是加密逻辑中的一些错误?我对少量此类崩溃感到困惑,好像有错误一样,它会影响更多的用户