Я хочу зашифровать данные в Android, чтобы сохранить их в общих настройках или отправить их на сервер.
Это класс, который я написал для этого, но я не знаю других способов сделатьэто более совершенный и безопасный.
Скажите, пожалуйста, ваши идеи!
public class Cryptogram {
private static byte[] iv;
private static IvParameterSpec ivspec;
public static byte[] Encrypt(String txt, SecretKey key) {
try {
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] cipherText = cipher.doFinal(txt.getBytes("UTF-8"));
iv = cipher.getIV();
ivspec = new IvParameterSpec(iv);
return cipherText;
} catch (Exception e) {
return e.toString().getBytes(Charset.forName("UTF-8"));
}
}
public static String Decrypt(byte[] txt, SecretKey key) {
try {
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", Security.getProvider("BC"));
cipher.init(Cipher.DECRYPT_MODE, key, ivspec);
String decryptString = new String(cipher.doFinal(txt), "UTF-8");
return decryptString;
} catch (Exception e) {
return e.toString();
}
}
}
Полный источник проекта здесь .