IOS 用keychain(钥匙串)保存用户名和密码

摘要:
由于存储在IOS系统中的数据位于sandBox中,一旦删除应用程序,sandBox将不再存在。幸运的是,有一个例外:钥匙链。通常,IOS系统使用NSUserDefaults来存储数据信息,但对于一些私人信息,如密码、证书等,需要更安全的密钥链。删除应用程序时,保存在密钥链中的信息不会丢失。因此,您可以使用此密钥链功能保存唯一的设备ID。如何在应用程序中使用密钥链?我们需要导入安全。框架keychain的操作接口在头文件SecItem中声明。小时。

IOS系统中,获取设备唯一标识的方法有很多:

一.UDID(Unique Device Identifier)

UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成。

二.UUID(Universally Unique Identifier)

UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码.

三.MAC Address

四.OPEN UDID

五.广告标示符(IDFA-identifierForIdentifier)

六.Vindor标示符 (IDFV-identifierForVendor)

Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。来自同一个运营商的应用运行在同一个设备上,此属性的值是相同的;不同的运营商应用运行在同一个设备上值不同。

经测试,只要设备上有一个tencent的app,重新安装后的identifierForVendor值不变,如果tencent的app全部删除,重新安装后的identifierForVendor值改变。

但是很不幸,上面所有这些表示设备唯一号的标识,在IOS7中要么被禁止使用,要么重新安装程序后两次获取的标识符不一样。

由于IOS系统存储的数据都是在sandBox里面,一旦删除App,sandBox也不复存在。好在有一个例外,那就是keychain(钥匙串)。

通常情况下,IOS系统用NSUserDefaults存储数据信息,但是对于一些私密信息,比如密码、证书等等,就需要使用更为安全的keychain了。

keychain里保存的信息不会因App被删除而丢失。所以,可以利用这个keychain这个特点来保存设备唯一标识。

那么,如何在应用里使用使用keyChain呢,我们需要导入Security.framework,keychain的操作接口声明在头文件SecItem.h里。

直接使用SecItem.h里方法操作keychain,需要写的代码较为复杂,我们可以使用已经封装好了的工具类KeychainItemWrapper来对keychain进行操作。

KeychainItemWrapper是apple官方例子“GenericKeychain”里一个访问keychain常用操作的封装类,在官网上下载了GenericKeychain项目后,

只需要把“KeychainItemWrapper.h”和“KeychainItemWrapper.m”拷贝到我们项目,并导入Security.framework。KeychainItemWrapper的用法:

/**初始化一个保存用户帐号的KeychainItemWrapper*/
KeychainItemWrapper*wrapper=[[KeychainItemWrapperalloc]initWithIdentifier:@"AccountNumber"
accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];
//保存数据
[wrappersetObject:@"<帐号>"forKey:(id)kSecAttrAccount];
[wrappersetObject:@"<帐号密码>"forKey:(id)kSecValueData];
//从keychain里取出帐号密码
NSString*password=[wrapperobjectForKey:(id)kSecValueData];
//清空设置
[wrapperresetKeychainItem];

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

————————————————————————————————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————————————————————————————————

直接贴代码

KeychainItemWrapper*keychain=[[KeychainItemWrapperalloc]initWithIdentifier:@"xxxxxx"accessGroup:nil];//xxxx 自定义

保存

[keyWrappersetObject:@"myChainValues"forKey:(id)kSecAttrService];

[keyWrappersetObject:[usernameTextFieldtext]forKey:(id)kSecAttrAccount];// 上面两行用来标识一个Item

[keyWrappersetObject:[passwordTextFieldtext]forKey:(id)kSecValueData];

读取

[usernameTextFieldsetText:[keyWrapperobjectForKey:(id)kSecAttrAccount]];

[passwordTextFieldsetText:[keyWrapperobjectForKey:(id)kSecValueData]];

另外需要引入Security.framework 和KeychainItemWrapper头文件(百度一下多得是)

免责声明:文章转载自《IOS 用keychain(钥匙串)保存用户名和密码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇1. Redis是属于多线程还是单线程?不同版本之间有什么区别?Android_模拟器无法启动解决办法汇总下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

很简单的在Ubuntu系统下安装字体和切换默认字体的方法

摘要: Ubuntu系统安装好后,默认字体对于中文的支持看上去不太美丽,于是很多朋友可能需要设置系统的默认字体为自己喜欢的字体。本文主要介绍如何解决这两个问题。 说明:测试系统是Ubuntu14.04。 安装字体:以微软雅黑字体为例(其他的宋体、黑体等点阵字体都一样的),我们的雅黑字体文件是:msyh.ttf(常规字体)和msyhbd.ttf(微软雅黑加...

Android开发之查看应用包名package和入口activity名称的方法

使用android自动化测试工具monkeyrunner启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法:方法一:使用aapt //aapt是sdk自带的一个工具,在sdkuilds-tools目录下1.以ES文件浏览器为例,命令行中切换到aapt.exe目录执行:aapt d...

微信开放平台注册 步骤

1.在https://open.weixin.qq.com 注册账号登录, 2.在管理中心/ 创建移动应用 中添加信息。 3.28x28的用PS做一个。 4. 应用签名用 https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&v...

2012开源项目计划-WPF企业级应用整合平台

2012开源项目计划-WPF企业级应用整合平台 开篇         2012年,提前祝大家新年快乐,为了加快2012年的开发计划,特打算年前和大家分享一下2012年的开发计划和年后具体的实施计划,希望有兴趣或者有志之士共 同加盟,我们一起完成一项属于自己的项目,实现共赢,无论是工作或者是学习上的双赢。         我为什么要现在发布这样的文章呢,其...

iOS开发者账号详细介绍

前言:   做为一个iOS应用的开发者,在编码调试过程中,可以使用模拟器来完成整个过程。但是在最后提交上线App的时候,就必须要有一个苹果开发者账号。而我作为一个近乎完全自学的iOS开发者,在开发者证书上也是绕了很多圈,迷茫迷惑。在反复摸索验证的情况下。最后看透了这一切。最初一开始是在淘宝网上购买证书的,后来在公司有了自己的个人开发者账号,在个人开发者账号...

OpenStack镜像制作笔记 以windows8.1amd64为例

by hyc 目录 1.下载win8_64位的iso文件 2.下载对应电脑的vnc 3.下载Xshell软件 4.连接成功后,在Xshell下安装软件包 5.下载FileZillaClient软件 6.驱动下载 7.镜像的安装与制作 8.用vnc远程安装系统 9.安装完后进行一些设置 9.1设置MTU 9.2关闭防火墙 9.3开启任何人远程访问 9.4更...