似乎SQLCipher是作为SQLite源代码+修改的结算进行分发的,通过快速查看来判断 - 这是多文件版本而不是“合并”。因此,您需要一个能够构建SQLite源的环境,这意味着一堆unixy应用程序。
个人而言,我会在SQLCipher源存档和它包含的SQLite版本(对于SQLCipher 1.8.2来看,SQLite 3.7.2,由VERSION文件判断)之间做差异 - 这应该给出一个想法对源SQLite文件进行哪些修改(如果有),以及SQLCipher特有的列表文件。
为避免手动构建OpenSSL带来的麻烦,您可以抓取预构建的版本,它可以摆脱Perl依赖关系(iirc OpenSSL使用Visual C++构建良好,因此MingW不应该成为依赖项)。
如果 SQLCipher作者并没有有目的地将他特定的代码部分从SQLite中分离出来(他可能会从销售win32二进制文件中获得一些钱),你可以采取他的改变,并结合SQLite合并版本和预编译的OpenSSL二进制文件,这应该使Visual Studio解决方案变得非常简单。
当然,这意味着如果您想升级到较新版本的SQLCipher,则需要经过提取步骤,但它可能是值得的,除非您真的想安装一个cygwin开发环境能够建立这个单一的图书馆。
或者,你可能能够做一个* U * X盒SQLCipher的配置步骤(这是否是Linux操作系统,* BSD或Mac OS X的外壳),因为编译一步不该” t需要所有时髦的工具。
UPDATE:
我签出(版本3.7.2)[http://www.sqlite.org/src/info/42537b6056]的SQLite并抵靠SQLCipher 1.1.8分布跑一个diff,它似乎是一个非常合理的任务来提取改变的部分:
Makefile.in - references added for the new crypto files.
tool/mksqlite3c.tcl: references added for the new crypto files.
src/pragma.c - one added block, marked /** BEGIN_CRYPTO **/
src/pager.c - one added block, marked /** BEGIN_CRYPTO **/
src/crypto.h - new file.
src/crypto.c - new file.
而且,它似乎相当矫枉过正采取OpenSSL的依赖只是为了让AES加密支持 - 构建基于SQLCipher新的东西要使用专用的(以及更小的)AES包更好。
我读了某处(http://zetetic.net/blog/2009/12/28/improvements-to-sqlcipher---cross-platform-sqlite-encryption/),有Visual Studio项目编译此代码。有没有人有vs.net解决方案? – 2010-12-04 11:43:44
也http://groups.google.com/group/sqlcipher/browse_thread/thread/55c6296b56bf4533/0781135c6cc47dc7?#0781135c6cc47dc7 – 2010-12-04 11:45:33