我已经使用“ ATTACH DATABASE”和十六进制密钥对数据库进行了加密。但是在使用相同的十六进制密钥解密时,出现错误“文件已加密或不是数据库”。将pKey传递给sqlite3_key()时发生任何错误。我正在使用sqlcipher-2.2.0版本。请参见下面的代码:
sqlite3_exec(persistence_db, "ATTACH DATABASE \'./encrypted.db\' AS db2 KEY \"x\'02\'\";", NULL, NULL, &zErrMsg);
sqlite3_exec(persistence_db, "SELECT sqlcipher_export('db2');", NULL, NULL, &zErrMsg);
sqlite3_exec(persistence_db,"DETACH DATABASE db2;",NULL, NULL, NULL)
//above 3 APIs returns SQLITE_OK
//但是在解密相同的crypto.db时出现错误
sqlite3_key(persistence_db, "x'02'", 2);
sqlite3_exec(persistence_db, "SELECT count(*) FROM sqlite_master;", NULL, NULL, &zErrMsg);
//这返回错误:文件已加密或不是数据库