экспорт файла sqlite - преобразовать его в собственный формат

У меня есть файл sqlite внутри моего приложения для iPhone. Я хочу, чтобы пользователи могли экспортировать и снова импортировать файл прямо из приложения на свой рабочий стол для целей резервного копирования. Но я не хочу, чтобы они имели прямой доступ к файлу sqlite или данным из любого места, кроме iPhone. Как преобразовать файл в собственный формат, который не читается? Есть ли какое-либо средство в Objective-C, которое позволит мне достичь этого?

Спасибо.


person Z S    schedule 23.11.2009    source источник


Ответы (1)


Вероятно, вам не следует пытаться переносить данные между базой данных sqlite и каким-либо проприетарным форматом. Я не вижу веских причин для фактического изменения базы данных sqlite напрямую, если только у вас уже есть какой-то формат, в котором вы можете легко хранить данные. Кроме этого, вы не найдете какой-то общий формат хранения данных, в который вы можете просто переместить свои данные из базы данных sqlite - это то, чем должна быть база данных в первую очередь (то есть общее хранилище данных)!

Уже кажется маловероятным, что у обычных пользователей будет стимул или ноу-хау, чтобы действительно читать или изменять базу данных sqlite. Вы можете попытаться скрыть тот факт, что это база данных sqlite, изменив расширение на что-то произвольное. Дальнейшие шаги (сжатие файла, шифрование файла каким-либо образом) будут зависеть от того, насколько вы на самом деле заботитесь о том, чтобы пользователь не мог получить доступ к данным вне вашего приложения. Тем не менее, ваши опасения кажутся принципиально необоснованными (на мой взгляд), и я не думаю, что вам следует слишком беспокоиться о пользователях, пытающихся копаться в базе данных sqlite и изменять ее, если у вас нет какой-то конкретной неустановленной причины верить этому.

person Bryan Henry    schedule 23.11.2009
comment
+1 Не существует нечитаемого проприетарного формата. Если он читается вашей программой (для восстановления), то он читаем по определению. Если вы по какой-то причине пытаетесь запутать данные, вы должны объяснить, с каким типом злоумышленника, по вашему мнению, вы столкнетесь, чтобы выбрать подходящий уровень защиты. Но невозможно полностью защитить данные или программы, которые пользователь имеет на своем собственном вычислительном оборудовании. - person Rob Napier; 23.11.2009
comment
Спасибо за это. Мои причины были довольно приземленными ... Я хочу в конечном итоге предложить компаньон для рабочего стола для моего приложения для iPhone. Я думал, что если я позволю пользователям загружать файл sqlite на свой рабочий стол, они смогут легко использовать редактор SQLite, такой как расширение Firefox SQLite Manager, для редактирования файла, что сделает мой рабочий стол немного избыточным. Но вы правы... нет смысла обфусцировать файл, только для этого. Может быть, достаточно переименовать. - person Z S; 23.11.2009