在SQLite中查询加密数据

时间:2018-05-11 17:53:59

标签: qt encryption sqlite hashmap

我想从我的SQLite数据库中查询加密数据。

对于每一行,我都对每个值使用XOR运算,将其转换为Base64,然后将其插入数据库中。

现在我需要找到一种方法来选择加密值。

即:

SELECT *
FROM table
WHERE name_column BETWEEN 'value1' AND 'value2'

考虑到我的数据库中的大量信息,如何在不解密所有表格以获取所需行的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

这是不可能的。您正在使用BETWEEN 'value1' AND 'value2'。数据库只能看到XORed字符串,而BETWEEN将无法按预期工作。即使你找到了一种用SQLITE即时解密字符串的方法(记得再次XOR调用会解密),当有数千个条目时,它的效率和资源消耗都不是很高。

因此,为了继续解决您的问题,您可以查看this扩展名列表。 SQLITE似乎提供了一些非常基本的加密模块,它们可以使用您定义的密钥对整个数据库进行异或。 (不推荐)

  

此文件描述了SQLite的SQLite加密扩展(SEE)。   SEE允许SQLite读取和写入加密的数据库文件。所有   数据库内容,包括元数据,被加密,以便   外部观察者数据库似乎是白噪声。

     

此文件包含SEE变体的完整源代码   弱XOR加密。不要认真对待这个文件。那是为了   仅用于演示目的。 XOR加密非常弱,几乎没有   符合"加密"。

您想要这样做的方式不会起作用,除非您读取Qt程序中列的所有值,解密它们并检查VALUE X是否在A和B之间。