Я хочу зашифровать / расшифровать некоторые пароли в базе данных SQLite моего приложения.Для этого я искал в интернете и нашел алгоритм AES.У меня есть этот код:
public String encript(String dataToEncrypt)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
// I'm using AES encription
if(!dataToEncrypt.equals("")){
String key = "FMVWf8d_sm#fz";
Cipher c = Cipher.getInstance("AES");
SecretKeySpec k;
try {
k = new SecretKeySpec(key.getBytes(), "AES");
c.init(Cipher.ENCRYPT_MODE, k);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return new String(c.doFinal(Base64.decode(dataToEncrypt)));
}
return "";
}
public String decript(String encryptedData)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
if(!encryptedData.equals("")){
String key = "FMVWf8d_sm#fz";
Cipher c = Cipher.getInstance("AES");
SecretKeySpec k = new SecretKeySpec(Base64.decode(key), "AES");
c.init(Cipher.DECRYPT_MODE, k);
return new String(c.doFinal(Base64.decode(encryptedData)));
}
return "";
}
После выполнения этого я получаю эту ошибку при методе шифрования:
01-27 14: 50: 51.698: ОШИБКА / АКТИВНОСТЬ (782):java.security.InvalidKeyException: длина ключа не 128/192/256 битов.
Я видел некоторые другие случаи здесь на stackoverflow, но я хочу дать ключ AES, чтобы не генерировать его ...
Может ли кто-нибудь помочь мне с этим?Если есть другой способ шифрования, но без использования других jar-файлов или внешних классов, и позвольте мне дать ключ.
Большое спасибо!