用SQLCipher把sqlite文件加密后为什么还能看到内容
1个回答
展开全部
NSString *path_sql = [NSString stringWithFormat:@"ATTACH DATABASE '%@' AS encrypted KEY 'BIGSecret';",string];
int result1 = sqlite3_exec(database_, [path_sql UTF8String], NULL, NULL, NULL);
NSLog(@"result1 = %d",result1);
int result2 = sqlite3_exec(database_, "SELECT sqlcipher_export('encrypted');", NULL, NULL, NULL);
NSLog(@"result2 = %d",result2);
int result3 = sqlite3_exec(database_, "DETACH DATABASE encrypted;", NULL, NULL, NULL);
NSLog(@"result3 = %d",result3);
这个是SQLCipher教程里,对没有加密过的数据库文件进行加密,他用的命令行,但我看了论坛说用exec语句也有相同功能,现在result1和result3都是SQLITE_OK,result2的值为1,貌似是这个sqlcipher_export方法找不到,但我已经把openSSL和SQLCipher这两个工程照着教程添加进我的主工程里了,为什么找不到呢?sqlite3_key语句已经复写了,可以看出和原来预留接口给出的key语句不一样,说明工程也依赖上了吧
int result1 = sqlite3_exec(database_, [path_sql UTF8String], NULL, NULL, NULL);
NSLog(@"result1 = %d",result1);
int result2 = sqlite3_exec(database_, "SELECT sqlcipher_export('encrypted');", NULL, NULL, NULL);
NSLog(@"result2 = %d",result2);
int result3 = sqlite3_exec(database_, "DETACH DATABASE encrypted;", NULL, NULL, NULL);
NSLog(@"result3 = %d",result3);
这个是SQLCipher教程里,对没有加密过的数据库文件进行加密,他用的命令行,但我看了论坛说用exec语句也有相同功能,现在result1和result3都是SQLITE_OK,result2的值为1,貌似是这个sqlcipher_export方法找不到,但我已经把openSSL和SQLCipher这两个工程照着教程添加进我的主工程里了,为什么找不到呢?sqlite3_key语句已经复写了,可以看出和原来预留接口给出的key语句不一样,说明工程也依赖上了吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询