iOS
SqlCipher एकीकरण
खोज…
परिचय
SQLite iOS ऐप में लगातार डेटा स्टोरेज के लिए पहले से ही एक लोकप्रिय एपीआई है, इसलिए विकास के लिए उल्टा स्पष्ट है। एक प्रोग्रामर के रूप में आप एक स्थिर, अच्छी तरह से प्रलेखित एपीआई के साथ काम करते हैं, जो कि एफएमडीबी और एनक्रिप्टेड कोर डेटा जैसे उद्देश्य-सी में कई अच्छे रैपर उपलब्ध होते हैं। सभी सुरक्षा चिंताओं को एप्लीकेशन कोड से साफ किया जाता है और अंतर्निहित ढांचे द्वारा प्रबंधित किया जाता है।
टिप्पणियों
- टर्मिनल खोलें, अपने प्रोजेक्ट के रूट डायरेक्टरी में स्विच करें और Git का उपयोग करके SQLCipher प्रोजेक्ट कोड चेक करें:
$ git clone https://github.com/sqlcipher/sqlcipher.git
- प्रोजेक्ट पर राइट क्लिक करें और "Add Files to" My App "चुनें (लेबल आपके ऐप के नाम के आधार पर अलग-अलग होगा)। चूंकि हमने SQLCipher को सीधे आपके iOS ऐप के समान फ़ोल्डर में क्लोन किया था, इसलिए आपको अपने रूट प्रोजेक्ट फ़ोल्डर में एक sqlcipher फ़ोल्डर देखना चाहिए। इस फ़ोल्डर को खोलें और sqlcipher.xcodeproj चुनें
बिल्ड सेटिंग्स फलक का चयन करें। खोज फ़ील्ड में, "हेडर खोज पथ" टाइप करें। लक्ष्य कॉलम के तहत फ़ील्ड पर डबल-क्लिक करें और निम्न पथ जोड़ें: $ (PROJECT_DIR) / sqlcipal /rc
सेटिंग दिखाई देने तक खोज फ़ील्ड में "अन्य लिंकर फ्लैग" टाइप करना शुरू करें, इसे संपादित करने के लिए डबल क्लिक करें, और निम्न मूल्य जोड़ें: $ (BUILT_PRODUCS_DIR) /libsqlcipher.a
सेटिंग दिखाई देने तक खोज फ़ील्ड में "अन्य C फ्लैग" लिखना शुरू करें, इसे संपादित करने के लिए डबल क्लिक करें, और पॉप-अप में निम्न मूल्य जोड़ें: -DSQLITE_HAS_CODEC
लक्ष्य निर्भरता का विस्तार करें और सूची के अंत में + बटन पर क्लिक करें। खुलने वाले ब्राउज़र में, sqlcipher स्थिर लाइब्रेरी लक्ष्य चुनें:
- लायब्रेरी के साथ लिंक बाइनरी का विस्तार करें, सूची के अंत में + बटन पर क्लिक करें, और libsqlcipher.a लाइब्रेरी का चयन करें।
- अंत में, लिंक विद लाइब्रेरीज़ के अंतर्गत भी Security.framework जोड़ें।
कोड का एकीकरण:
पासवर्ड का उपयोग करके डेटाबेस खोलने के लिए एकीकरण।
-(void)checkAndOpenDB{
sqlite3 *db;
NSString *strPassword = @"password";
if (sqlite3_open_v2([[databaseURL path] UTF8String], &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK) {
const char* key = [strPassword UTF8String];
sqlite3_key(db, key, (int)strlen(key));
if (sqlite3_exec(db1, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) {
NSLog(@"Password is correct, or a new database has been initialized");
} else {
NSLog(@"Incorrect password!");
}
sqlite3_close(db);
}
}
- (NSURL *)databaseURL
{
NSArray *URLs = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *directoryURL = [URLs firstObject];
NSURL *databaseURL = [directoryURL URLByAppendingPathComponent:@"database.sqlite"];
return databaseURL;
}