2013-02-10 3 views
0

Мне нужно хранить в моем проекте большое количество различных конфиденциальных данных. Данные могут быть представлены как закодированные NSStrings. Я скорее хотел бы инициализировать это в коде, чем читать из файла, так как это более безопасно.Инициализация больших массивов эффективно в Xcode

Так что мне нужно было около 100k линии, как это:

[myData addObject: @"String"]; 

или как этот

myData[n++] = @"String"; 

Положив эти строки в Xcode вызывает во время компиляции экстенсивно увеличить до нескольких часов (кстати, в Eclipse требуется часть секунды для составления таких строк 100k)

Что было бы безопасными альтернативами?

(пожалуйста, не предполагают чтение из файла, так как это делает данные намного проще взломать)

ответ

3

Строки в вашем коде можно легко сбрасывать с помощью таких инструментов, как strings.

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

Однако вы не должны рассматривать какие-либо данные, которые вы фактически доставляете конечному пользователю, будь то в файлах кода или ресурсов, как «конфиденциальные». Это не так и не может быть.

+1

+1 Как вы можете предположить, каждый метод, который делает зашифрованный файл взломанным, равнозначно делает встроенные данные одинаково доступными. Поскольку в безопасности мало практического улучшения, вы должны выбрать более простой инструмент для реализации, и это вызывает наименьшую проблему для ваших законных пользователей. –

1

Я бы поставил строки в файле Plist и читать его в NSArray во время выполнения. Для обеспечения безопасности зашифруйте файл.

+0

Спасибо, я предпочитаю не помещать данные в файл, так как один легко знает, что дешифровать сразу - использование массивов в коде делает это менее очевидным ... – user387184

+0

Как знать, что расшифровать, поможет злоумышленнику, если они не знают ключ? – zaph

+1

Я бы предположил, что найти простой ключ в коде намного проще, чем дешифрование полных данных, зашифрованных в классах где-то в коде ... – user387184

Смежные вопросы