Ich hatte viele Probleme, meine SQLITE-Datenbank für mein Projekt zu verschlüsseln und schließlich versuche ich, die attach-Datenbankmethode zu verwenden, um meine unverschlüsselte Datenbank zu verschlüsseln.Datenbank für SQLCIPHER anhängen
Ich habe versucht, den Befehl attach am Terminal auszuführen, nur um zu realisieren, dass die Ausgabe eine unverschlüsselte Datenbank wäre. Also, richtigerweise sollte ich die Befehle in meinem Projekt ausführen, mit meinen sqlcipher und ssl-Bibliotheken richtig importiert?
Also habe ich es versucht, die Methode läuft ohne Fehler, aber ich habe nicht einmal die verschlüsselte Datenbank im Dokumentenverzeichnis erstellt werden. Was mache ich falsch? [Code Snippet unten]
- (void)encryptDB
{
NSLog (@"Start");
sqlite3 *DB = [iPad_3AppDelegate getNewDBConnection];
sqlite3_exec(DB, "ATTACH DATABASE KeyCryptENC.db AS encrypted KEY 1234;", NULL, NULL, NULL);
sqlite3_exec(DB, "CREATE TABLE encrypted.Account(A_id,C_ID,Account_Name,Username,Password,Other_Information);", NULL, NULL, NULL);
sqlite3_exec(DB, "CREATE TABLE encrypted.Categories(C_ID,Category);", NULL, NULL, NULL);
sqlite3_exec(DB, "CREATE TABLE encrypted.UserInfo(Password,Hint,Secret_Question,Secret_Answer);", NULL, NULL, NULL);
sqlite3_exec(DB, "INSERT INTO encrypted.Account SELECT * FROM Account;", NULL, NULL, NULL);
sqlite3_exec(DB, "INSERT INTO encrypted.Categories SELECT * FROM Categories;", NULL, NULL, NULL);
sqlite3_exec(DB, "INSERT INTO encrypted.UserInfo SELECT * FROM UserInfo;", NULL, NULL, NULL);
sqlite3_exec(DB, "DETACH DATABASE encrypted;", NULL, NULL, NULL);
NSLog (@"End");
}
+ (sqlite3 *)getNewDBConnection{
sqlite3 *newDBconnection;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"KeyCrypt.sqlite"];
// Open the database. The database was prepared outside the application.
if (sqlite3_open([path UTF8String], &newDBconnection) == SQLITE_OK) {
NSLog(@"Database Successfully Opened :)");
} else {
NSLog(@"Error in opening database :(");
}
return newDBconnection;
}
Vielen Dank für die Hilfe Jungs!
Hallo seelani, Können Sie im Detail erklären, wie Sie eine verschlüsselte Datenbank aus einer SQL-SQL-Datenbank erstellt haben? Ich stecke gerade fest, wie du warst –
hast du es herausgefunden, Entschuldigung für die späte Antwort war eine Woche Urlaub genießen. Nun, das ist der Link, den ich verwendet habe, um mein Problem zu lösen, https://github.com/sjlombardo/sqlcipher/issues/closed#issue/1 Blick auf den zweiten Kommentar von sjlombardo. – seelani
Muß KeyCryptENC.db vor der Ausführung dieses Codes existieren? Sollte KeyCryptENC.db im Verzeichnis Dokumente für die App gespeichert werden? –