如何在SQLite中查询加密字段

时间:2011-11-09 14:05:20

标签: java sqlite encryption

我需要在我的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函数来解密和加密。我认为这将解决这个问题中的问题。

0 个答案:

没有答案