В настоящее время я работаю над простым приложением для управления учетными записями для iPhone.Я использую sqlcipher для шифрования и дешифрования базы данных.
В настоящее время у меня есть незашифрованная база данных в комплекте приложений, которую я хочу скопировать в каталог документов iPhone и затем зашифровать или зашифровать.прежде чем я скопирую его в каталог документов.
Проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, что я делаю, мне кажется, что я получаю незашифрованную базу данных, независимо от того, какой метод шифрования я пытаюсь использовать,будь то метод базы данных «ATTACH» или метод «key () / rekey ()».
Я попытался использовать метод базы данных «ATTACH» в терминале, но в результате получилась незашифрованная база данных.Я попытался использовать метод "key () / rekey ()" программно, как показано здесь:
sqlite3 *db;
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"KeyCrypt.sqlite"];
if (sqlite3_open([defaultDBPath UTF8String],&db)==SQLITE_OK) {
NSLog (@"Running keying.");
sqlite3_key(db, "1234", 4);
if (sqlite3_exec(db, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) {
// password is correct, or, database has been initialized
NSLog (@"This has occured correctly?");
}
else
{
// incorrect password!
NSLog (@"This has occured incorrectly?");
}
}
Я что-то делаю не так, где-то?Я пытался исследовать онлайн целый день и не смог найти решение, почему моя база данных не зашифрована до или во время выполнения: (
Если вам требуется дополнительная информация, я хочупредоставьте это вам, пожалуйста, помогите студенту!
СПАСИБО!
РЕДАКТИРОВАТЬ:
Выдержка из метода, используемого для ввода моей базы данных.
//Initializing the sqlite3_key function.
int sqlite3_key(sqlite3 *db, const void *pKey, int nKey);
sqlite3_key(db, "1234", 4);
Очевидно, я не инициализировал sqlite3_key -_- ". Также, несмотря на то, что файл зашифрован, проверка все еще говорит, что что-то произошло неправильно, и база данных не была успешно открыта.
Относительно открытия баз данных, каждый экземпляря открываю свою базу данных, мне нужно запустить sqlite3_key, верно? И во время этого экземпляра я могу получить доступ к базе данных в соответствии с обычным правом?
Спасибо за помощь.