Qt+SQLite数据加密的一种思路

Posted by Spoony - 2010.6.16 at 4:38 PM

了解Qt是比较早的,可是一直没有耐心去做一个练习。近期花了差不多两周时间做了次Qt开发练习,基本完成了Qt的入门,逃脱微软平台又迈出了几小步。Qt虽然是C++的,但开发应用是比较方便的,我觉得它在界面设计、消息传递方面超过了Delphi,甚至在一些方面更优于.net WinForm。给入门造成门槛的是关于Qt的中文资料相对较少,遇到问题寻找解决方法的成本较高,需要极大的耐心。

在学习Qt的时候在考虑一个问题——数据如何做到一定程度的保密而且能对数据进行方便的查询?首先想到是用数据库,而数据库需要有专门的数据库服务器支持,比如Oracle、MySQL、SQLServer,有没有一种不需要数据库服务器支持的数据库呢?自然又会想到Access、SQLite等。Access 的加密形同虚设,SQLite要支持加密需要修改并重新编译其源码或者购买高级的SQLite版本。

当我打开Qt自带的关于数据库操作的Demo时,无意看到两行代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");

用的是上面提到的SQLite数据库,而这个数据库的路径并不像是在本地文件的路径。经查,这么设定可以直接在内存中创建一个SQLite数据库。这样,数据是可以实现不落地的。那么一个具有一定保密功能,同时又拥有数据库查询性能,而且无需数据库服务器支持的数据存储方案有了。大概思路是这样的:

1.在资源文件中附加文本格式的数据文件,如果对安全性还有担心,可以加密这个数据文件。
2.在程序第一次启动时在内存中创建SQLite数据库,将这些数据插入到库中。

这样之后,当需要对数据进行查询、排序操作时就可以方便地通过数据库功能来实现了,同时保证数据库不落地,数据是比较安全的。唯一要付出的成本是每次程序启动时都要去将数据插入到即时创建的数据库中,适用于数据条数和单笔数据都不大,而查询性能要求较高的情况。

赵紫阳

Posted by Spoony - 2010.6.4 at 12:1 AM

Zhao 赵紫阳(1919年10月17日-2005年1月17日),原名赵修业,河南滑县人,中华人民共和国政治家、改革家,1980年代先后担任中华人民共和国国务院总理(1980年—1987年)和中共中央总书记(1987年—1989年)。在任期间,是中共党内改革派的重要领袖之一,大力发展市场经济,还提出进行政治改革,打击腐败,推进改革开放的深化,曾一度被认为是邓小平的接班人。1989年的六四事件中,赵紫阳因同情学生和反对武力镇压,而招致以邓小平为首的中共元老们的不满,被免去党内外一切职务,最终在软禁中度过15年的余生,于2005年逝世。
由于赵紫阳在六四事件中的立场与态度,以及他在事后面对党内声讨时坚持己见为自己辩护,中共官方对于赵紫阳的评价直至其逝世后仍然以六四的“错误”为重点。但是他注重经济发展、同情民主主张、反对集权镇压等言行,却在中国民间以及大陆以外获得了大量的支持,成为现代中国大陆民主运动的标志性人物之一。

转自维基百科:http://zh.wikipedia.org/zh-cn/赵紫阳

谨以此缅怀一下赵紫阳同志以及他曾支持过的那个乌托邦。


spoony

Categories

Shared Reading

囧马


Games

Are you interested?

Recent comments

评论 RSS

Archives