我想加密/解密我的應用程序的SQLite數據庫中的一些密碼。要做到這一點,我已經在互聯網上搜索,並找到了AES算法。 我有這樣的代碼:android加密
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:ERROR /活動(782): java.security .InvalidKeyException:密鑰長度不是128/192/256位。
我在這裏看到了一些其他情況下的計算器,但我想給的關鍵AES不產生它...
有人可以幫我嗎?如果有其他加密方法可以使用,但不使用其他罐子或外部類並讓我給出密鑰。
非常感謝!
我明白這是一個非常古老的問題,但對於未來的讀者使用[這](https://github.com/ryan652/EasyCrypt/)庫作爲執行加密/解密正確可以很困難並且支持多種數據類型會增加複雜性。 – Ryan 2017-07-16 01:40:26