我想从我的SQLite数据库中查询加密数据。
对于每一行,我都对每个值使用XOR运算,将其转换为Base64,然后将其插入数据库中。
现在我需要找到一种方法来选择加密值。
即:
SELECT *
FROM table
WHERE name_column BETWEEN 'value1' AND 'value2'
考虑到我的数据库中的大量信息,如何在不解密所有表格以获取所需行的情况下执行此操作?
答案 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之间。