在iPhone上存储用户名和密码的最佳做法是什么?

在iPhone上存储用户名和密码的最佳做法是什么?,iphone,objective-c,security,passwords,Iphone,Objective C,Security,Passwords,有没有在iPhone上存储用户名和密码的最佳实践方法?我要找的东西显然是安全的,但也会在应用程序更新之间保留信息。使用苹果钥匙链 + (NSString *) getPasswordForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error; + (void) storeUsername: (NSString *) username andPasswo

有没有在iPhone上存储用户名和密码的最佳实践方法?我要找的东西显然是安全的,但也会在应用程序更新之间保留信息。

使用苹果钥匙链

+ (NSString *) getPasswordForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;

+ (void) storeUsername: (NSString *) username andPassword: (NSString *) password forServiceName: (NSString *) serviceName updateExisting: (BOOL) updateExisting error: (NSError **) error;
第一种方法允许您请求 与密码关联的密码 特定用户的现有用户名 服务名称(我刚刚使用了 我的应用程序名称(作为服务名称)。这个 第二个允许您存储 用户名/密码/服务名称组合, 并允许您指定 不是合适的钥匙链项目 应使用提供的 密码(如果找到现有密码) 与用户名和服务匹配的 名字对。每个参数的最后一个参数 是对NSError对象的引用 它将包含较低级别的错误 如果出了什么问题,我会提供信息 (如果没有,则为零)


有关更多信息,请参见。

这是您正在寻找的。

使用钥匙链,这里是为了使其非常简单。在设备和模拟器上工作。

请参阅示例源代码。这是一种方式,IMHO

该链接适用于Mac OS X钥匙链。以下是iPhone版本的链接(它们略有不同):密码是以明文形式返回的吗?当我将该类添加到我的项目中时,我得到了一系列奇怪的错误,例如“\u kSecAttrAccount”,引用自:\u kSecAttrAccount$non\u lazy\u ptr in SFHFKeychainUtils.o”\u SecItemDelete“,引用自:+[SFHFKeychainUtils deleteItemForUsername:和ServiceName:error:]在SFHFKeychainUtils.o“kSecReturnAttributes”,引用自:SFHFKeychainUtils.o“kSecReturnAttributes$non_lazy_ptr”,引用自:SFHFKeychainUtils.o“kSecClassGenericPassword”,引用自:SFHFKeychainUtils中的\u kSecClassGenericPassword$non\u lazy\u ptr。存储用户名值的最佳做法是什么?是否有方法查找任何用户名,仅提供ServiceName?