iOS keychain保存用户信息

作者: phzean | 来源:发表于2016-04-11 11:16 被阅读609次

一、讨论

保存用户的信息并获得苹果设备的唯一标识是开发者们一直讨论的东西,早期苹果是有提供方法来直接获取到用户手机的udid作为唯一标识,但是不久之后这个方法就被禁止了。然后机智的大神们想到获取设备的MAC地址来作为唯一标识,但是仍然不幸的被苹果给无情的拒绝了。

现在的话我们可以通过[UIDevice currentDevice].identifierForVendor.UUIDString这个方法获取标识,但是这串字符串在应用卸载后重新安装操作后会发生改变,因此并不能唯一的标识设备。so,keychain就登场了。

二、keychain

keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于 NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。并且还允许同一开发商的不同APP之间的访问。

三、Xcode配置

  1. 使用keychain得导入Security.framework
  2. 配置一个.plist文件,里面包含的就是AceessGroup的分组信息


    plist文件
  3. 设置文件路径


    文件路径

.plist中的$(AppIdentifierPrefix)com.****字符串说明

  1. AppIdentifierPrefix:开发者帐号ID,是一个10个字符组成的bundle seed id,在申请账号的时候会自动生成。因此需要跟xcode选择的证书相匹配。eg:33LE83RVLQ
  2. com.****:代表公司名称。
  3. 这字符串是开发者自己定义的
  4. 关于这字符串的详细说明可参照这个链接https://appworker.wordpress.com/2011/12/02/ios-bundle-id-or-bundle-seed-id-%E8%A7%A3%E8%AA%AA/

还有一种更方便的设置方法:打开KeyChain Sharing开关,然后设置好主KEY的名称。跟着设置步骤走即可,生成的.entitlements跟上面的.plist文件是一样的。


四、代码实现

方法1、使用苹果官方封装的类实现

KeychainItemWrapper类添加到目录当中即可

下载链接https://developer.apple.com/library/ios/samplecode/GenericKeychain/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007797

类中的一些方法说明

KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"
                                                                   accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];  
 
//保存帐号
[wrapper setObject:@"<帐号>" forKey:(id)kSecAttrAccount];    

//保存密码
[wrapper setObject:@"<帐号密码>" forKey:(id)kSecValueData];    
 
//从keychain里取出帐号密码
NSString *password = [wrapper objectForKey:(id)kSecValueData];      
 
//清空设置
[wrapper resetKeychainItem];

waring:方法- (void)setObject:(id)inObject forKey:(id)key;里参数forKey的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会崩溃!

方法2、使用第三方库SFHFKeychainUtils

使用方法请参照这个链接http://www.wahenzan.com/a/mdev/ios/2014/1129/130.html

相关文章

  • IOS使用 SFHFKeychainUtils 在 iOS ke

    为什么使用Keychain存储用户敏感信息 : iOS的keychain服务提供了一种安全的保存私密信息(密码,序...

  • SFHFKeychainUtils

    使用Keychain存储用户敏感信息 iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书...

  • iOS keychain保存用户信息

    一、讨论 保存用户的信息并获得苹果设备的唯一标识是开发者们一直讨论的东西,早期苹果是有提供方法来直接获取到用户手机...

  • keychain(一)

    iOS keychain 主要是用来保存一些用户敏感数据。比如用户密码,token。keychain是用SQLit...

  • iOS开发使用keychain保存用户名及密码

    KeyChain是苹果提供的一种安全的保存用户名、密码、证书的方式,将敏感信息保存在keychain中后,这些信息...

  • 使用KeyChain保存用户信息

    1.新建一个LYKeychainTool类,导入系统Security框架 ,LYKeychainTool.h文件实...

  • OC Keychain

    什么是Keychain? iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用...

  • ios Keychain存储

    iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证...

  • 查看iOS越狱设备keyChain数据

    根据苹果的介绍,iOS设备中的keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码...

  • 数据安全之钥匙串加密

    简介:钥匙串(Keychain)iOS系统自带的一套敏感信息保存方案。保存钥匙串的内容相当于系统对其做了保护,在设...

网友评论

    本文标题:iOS keychain保存用户信息

    本文链接:https://www.haomeiwen.com/subject/nkkilttx.html