我需要在我的sqlite数据库中为android加密一个字段。我将使用以下代码来做到这一点。了解我从网站上抓取代码。如果您有任何更好的想法,请告诉我。
public byte[] keyGen() throws NoSuchAlgorithmException {
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(192);
return keyGenerator.generateKey().getEncoded();
}
public byte[] encript(byte[] dataToEncrypt, byte[] key)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
//I'm using AES encription
Cipher c = Cipher.getInstance("AES");
SecretKeySpec k = new SecretKeySpec(key, "AES");
c.init(Cipher.ENCRYPT_MODE, k);
return c.doFinal(dataToEncrypt);
}
public byte[] decript(byte[] encryptedData, byte[] key)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher c = Cipher.getInstance("AES");
SecretKeySpec k = new SecretKeySpec(key, "AES");
c.init(Cipher.DECRYPT_MODE, k);
return c.doFinal(encryptedData);
}
请注意,该字段是长文本并具有索引。现在我的问题是如何查询加密字段?我可以从数据库中获取一行并解密该字段。但我不知道在这种情况下如何使用where子句。也许有一个sqlite函数来解密/加密?
更新:我决定创建自定义SQLite函数来解密和加密。我认为这将解决这个问题中的问题。