SQLCipher可执行文件无法在macOS

时间:2018-02-15 14:35:04

标签: database macos sqlite sqlcipher

我尝试在macOS上编译并运行SQLCipher,但它无效。

我做错了什么?是否有任何无用的行为?

1) OpenSSL构建

  • 下载并解压缩OpenSSL v1.0.2最新版本源的存档 (https://www.openssl.org/source
  • 创建文件夹" /usr/local/lib/openssl-1.0.2"
  • 使用命令构建:

-

$ ./Configure darwin64-x86_64-cc shared --openssldir=/usr/local/lib/openssl-1.0.2
$ make depend
$ sudo make install

文件位于" /usr/local/lib/openssl-1.0.2/lib"

2) SQLite构建

  • 下载并解压缩SQLite上一版本源的存档 脚本"配置"和makefiles TEA (https://www.sqlite.org/download.html
  • 创建文件夹" /usr/local/lib/sqlite-3.22.0"
  • 使用命令构建:

-

$ ./configure --prefix=/usr/local/lib/sqlite-3.22.0
$ make
$ make install

文件位于" /usr/local/lib/sqlite-3.22.0/lib"

3) SQLCipher build

-

$ ./configure --prefix=/usr/local/lib/sqlcipher-3.4.2 --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="/usr/local/lib/openssl-1.0.2/lib/libcrypto.a"
$ make clean
$ make
$ make install

4)运行测试

  • 复制构建文件" /usr/local/lib/sqlcipher-3.4.2/bin/sqlcipher"上 测试文件夹" / Users / user / Documents / sqlcipher-test"
  • 复制文件" /usr/local/lib/sqlcipher-3.4.2/lib/libsqlcipher *", " /usr/local/lib/sqlite-3.22.0/lib/libsqlite3 *"和 " /usr/local/lib/openssl-1.0.2/lib/libcrypto *"在测试文件夹" / Users / user / Documents / sqlcipher-test"
  • 测试文件夹" / Users / user / Documents / sqlcipher-test"包含:' sqlcipher' (exec),' libcrypto.1.0.0.dylib',' libcrypto.a',' libcrypto.dylib',' libsqlcipher.0.dylib& #39;,' libsqlcipher.a',' libsqlcipher.dylib',' libsqlcipher.la',' libsqlite3.0.dylib', ' libsqlite3.a',' libsqlite3.dylib'和' libsqlite3.la'
  • 将命令行文件夹更改为测试文件夹(cd "/Users/user/Documents/sqlcipher-test"
  • 创建新的SQLite纯文本数据库

-

$ ./sqlcipher plaintext.db
$ sqlite> create table testtable (id integer, name text);
$ sqlite> insert into testtable (id,name) values(1,'Bob');
$ sqlite> insert into testtable (id,name) values(2,'Charlie');
$ sqlite> insert into testtable (id,name) values(3,'Daphne');
$ sqlite> select * from testtable;
$ sqlite> .exit
  • 使用标准文本编辑器打开plaintext.db文件:数据库方案 和测试数据可以用明文阅读
  • 创建新的SQLCipher加密数据库

-

$ ./sqlcipher plaintext.db
$ sqlite> ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'testkey';

"错误:无法打开数据库:encrypted.db"

" encrypted.db"文件为空

有关更多信息,请参阅https://www.zetetic.net/sqlcipher/sqlcipher-api/

0 个答案:

没有答案