Вопрос по objective-c, obfuscation, encryption – Objective-C, как запутать или зашифровать NSString?

1

У меня есть NSString (который является путем к файлу) в моем коде, который я хотел бы как-то запутать или зашифровать,

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

Я просто хотел бы использовать его с чем-то вроде этого:

- (void)method {

NSString *obfuscate = @"/path/to/something/secret"; // encrypt or obfuscate

[self manageFiles:obfuscate]

- (void)manageFiles(NSString *)obfuscate {

    NSFileManager *files = [[NSFileManager alloc] init];

    if ([files fileExistsAtPath:obfuscate])

    ... .

& # X2014; любая помощь приветствуется, спасибо.

Вы можете использовать библиотеку Common Crypto. Parag Bafna
@JoeHabadas Взгляните наgithub.com/AlanQuatermain/aqtoolkit/tree/master/CommonCrypto Parag Bafna
@evanmcdonnal, это то, что я спрашиваю; как я могу сделать это разумно? мне нравится идея Rot-13 или Vigen & # xE8; re. если это то, что вы говорите. & # X2014; Вы думаете что-то вроде ответа скрама? ти. Joe Habadas
Если вы хэшируете путь к файлу, как вы собираетесь обращаться к файлам впоследствии? Вы можете сделать очень простое шифрование, например, сдвигая символы и поворачивая их. Функции для шифрования и дешифрования не будут состоять из множества строк кода. evanmcdonnal
@ParagBafna, как? Joe Habadas

Ваш Ответ

2   ответа
2

В Obj-C такого способа нет. Obj-C достаточно динамичен, чтобы любой из этих методов можно было перехватить и перехватить. Не отправляйте ничего в приложении, которое обязательно должно быть секретным. Если ваше приложение запускается на взломанном телефоне или если оно доступно на пиратских сайтах, то оно уже было открыто и содержимое памяти удалено. Все вышеперечисленные методы копируют декодированные данные в основную память, где они отображаются.

Увидеть: https://www.youtube.com/watch?v=Ii-02vhsdVk

Ни один из перечисленных методов на самом деле не является безопасным. Опять же, не встраивайте подобные вещи в свои приложения с гарантией того, что они действительно безопасны.

Также этот ответ даже не пытается ответить на вопрос. Принятый ответ не будет компилироваться, тем более работать или предлагать какую-либо безопасность. Пример: ввод: "abcdefghi" вывод: "jkldefghi", добавьте 3 к каждому символьному значению, поверните строку на 3 символа.
Второй ответ, в частности, безумно слаб. Первый алгоритм не является наихудшим, но его можно легко взломать. Меня беспокоило то, что ни один из этих заявлений об отказе не был применен к вышеупомянутому. Если ОП пытался защитить данные, которые на самом деле должны быть очень хорошо скрыты, я не знаю, был ли какой-либо из ответов полностью прозрачным в отношении того, насколько хорошо работают эти методы.
Что касается двух других ответов, они - не что иное, как запутывание, которое действительно слабое, но может быть достаточным. Вопрос заключается в том, оценивал ли ОП значение «фактор работы» при выборе метода защиты.
Хотя это верно, можно привести тот же аргумент, что на самом деле ничего нельзя сделать безопасным. Даже Gemalto, мировой лидер в области цифровой безопасности, был взломан в 2010 и 2011 годах, и даже RSA был успешно атакован. Значит ли это, что мы должны отказаться от попыток? Отказаться от шифрования? Нет, важен уровень рабочего фактора (необходимые усилия). Всегда хорошо увеличивать фактор работы. Шифрование помимо всего прочего увеличивает фактор работы. Нужно оценить ценность данных для владельца, злоумышленника, репутации разработчика с точки зрения времени и денег.
@zaph: Это скомпилировано для меня (после повторного выполнения всего этого), мне просто нужно выяснить, как вернуть те 10 минут, которые я потратил впустую. Я в конечном итоге с помощьюRSA в конце концов, для этой конкретной задачи было немного удивительно, что никто не упомянул об этом в то время ... Методы, использованные здесь в этой теме, не остановили бы меня еще в 80-х, когда мне было 12 лет. Joe Habadas
1

что я сделал в прошлом, чтобы запутать строку, было чем-то вроде этого:

-(NSString*)myString {

    NSString *string = nil;

    string = [@"ozzzzzzzzzzzzhazzzzzzzizzzzzz" stringByReplacingOccurrencesOfString:@"z" withString:@""];

    return string;
}

Что бы это сделать, это удалить все вхождения письмаz, оставляя тебя сohai как строка Не уверен, что этого будет достаточно для вашего случая, но это сработало для меня.

Надеюсь это поможет!

Хотя это сработало для писателя, я бы также предположил, что это сработало для злоумышленника.
Как вы сможете вернуть исходный путь к файлу снова, после того как вы это сделали?
Я люблю такие ссылки ... и, возможно, я должен был включить (сарказм) там: р Joe Habadas
@zaph: я немного изменил, чтобы сделать его более сложным, хотяstring = [@"llqzllqallqpllqhllq hllqallqxllqollqrllqellqd llqmllqe" stringByReplacingOccurrencesOfString:@"llq" withString:@""]; & # X2014; есть только один или два человека, которые могли бы взломать это. Joe Habadas
интересная идея; Как бы я использовать это с NSFileManager функцию, которую я показал? Спасибо Joe Habadas

Похожие вопросы