Преобразование NSUserDefaults в связку ключей? - PullRequest
5 голосов
/ 20 мая 2010

Итак, NSUserDefaults довольно прост в использовании. Но, видимо, это не слишком безопасно - здесь нет шифрования. И, конечно же, клиент хочет, чтобы настройки приложения были безопасными, поскольку он содержит конфиденциальные данные.

Но связка ключей безопасна, хотя ее трудно кодировать (очевидно). Так есть ли способ легко преобразовать код NSUserDefaults в код цепочки для ключей? Другими словами, я хочу сохранить настройки приложения в связке ключей. Или я лаю не на том дереве?

Ответы [ 3 ]

3 голосов
/ 20 мая 2010

Оба приведенных ниже решения являются обертками вокруг KeyChain API. Используя их в категории NSUserDefaults, вы можете иметь чистый способ доступа и хранения паролей.

Для Mac OS X

Вы можете попробовать библиотеку EMKeyChain , которая дружественно оборачивает связку ключей. Если вам нужно хранить пароли, это так же просто, как NSUserDefaults.

для iPhone

Существует простая оболочка: Простой код брелка для iPhone .

1 голос
/ 18 июля 2012

Для iOS (и, возможно, OS X) вы можете использовать мою библиотеку GSKeychain . Пример использования:

// Store a secret
[[GSKeychain systemKeychain] setSecret:@"t0ps3kr1t" forKey:@"myAccessToken"];

// Fetch a secret
NSString * secret = [[GSKeychain systemKeychain] secretForKey:@"myAccessToken"];

// Delete a secret
NSString * secret = [[GSKeychain systemKeychain] removeSecretForKey:@"myAccessToken"];

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

0 голосов
/ 21 сентября 2013

Это очень просто сделать с помощью библиотеки PDKeychainBindings. Здесь - статья, которую я недавно написал об этом. Пример кода

Вместо этого

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[[Model sharedModel] currentUser] setAuthToken:[defaults objectForKey:@"authToken"]];

Используйте это

PDKeychainBindings *bindings = [PDKeychainBindings sharedKeychainBindings];
[[[Model sharedModel] currentUser] setAuthToken:[bindings objectForKey:@"authToken"]];
...