【问题标题】:Sorting of database table by encrypted field按加密字段排序数据库表
【发布时间】:2016-04-22 12:07:44
【问题描述】:

我有一个如下所示的 SQLite 表:

CREATE TABLE MyTable
( _id INTEGER PRIMARY KEY AUTOINCREMENT,
  encrypted_field BLOB
);

其实这个 BLOB 就是 Java 类的 AES-256 加密的 JSon,比如:

public class MySecretClass {
   private Date date;
   private String message;
}

因为它在 Android 下 - 我有 ContentProvider 读取数据,“即时”解密记录并提供适当的 ListViewRecyclerView

我需要通过DateString 提供排序

我的第一个意图是在我的表中引入额外的字段,以便它反映记录修改并以某种方式“模拟”DateString 的排序,但最后我卡住了,发现这是不可行的。

还有其他想法、解决方法吗?

【问题讨论】:

  • 你在使用 CursorAdapter 吗?
  • 您为什么不使用加密数据库,例如 Android 的 SQLCipher?然后,您可以为此编写一个普通的 SQL 查询,假设您的日期和消息在常规 SQL 列中。
  • 1) 是的,有点像CursorAdapter。 2) 好吧,我不能使用 SQLCipher - 它的故事已经够长了,肯定超出了这篇文章的范围))
  • 不管什么“长篇故事”阻止您让您的数据库进行加密,如果无法解密的东西能够对其进行排序 - 您的弱点加密。即使只是将排序顺序与加密数据一起存储也会取消您的安全工作,以至于您应该质疑为什么首先要费心对其进行加密。 .... 结论:在应用程序中排序,而不是在数据库中。

标签: java android sql sqlite encryption


【解决方案1】:

在应用程序中排序,而不是在数据库中。

是的,我同意这是最好的解决方案。

具体来说,我将使用MatrixCursor,它非常适合我的目的。解密内容并将对象放入MatrixCursor 将得到所需的结果。

幸运的是,可排序的内容并不多,每条记录只有几个单词,记录数合理(

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多