iOS钥匙串Keychain浅析

根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。苹果自己用keychain来保存WiFi密码,VPN凭证等。它是一个SQLite数据库,位于/private/var/Keychains/keychain-2.db,其保存的所有数据都是加密过的。

比如在Mac的LaunchPad中,就有一个钥匙串访问,打开就可以看到存储有很多重要的信息:

开发者通常会希望能够利用操作系统提供的功能来保存凭证(credentials)。而不是把他们(凭证)保存到NSUserDefaults,plist文件等地方。保存这些数据的原因是开发者不想用户每次都要登陆,因此会把认证信息保存到设备上的某个地方并且在用户每次打开应用的时候用这些数据自动登陆。Keychain的信息是存在于每一个App的沙盒之外的。

下面我们来看一看Keychain有哪些功能:

(1)在应用间利用Keychain共享数据

我们可以把Keychain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionary进行add,update,get,delete.这四个操作。对于每一个应用来说,Keychain都有两个访问区,私有区和公共区。私有区是一个sandbox,本程序存储的任何数据对其他程序不可见。而想要在将存储的内容放在公共区,需要先声明公共区的名称,官方文档管这个名称叫:“keychain access group”,声明的方法是一个plist文件。

(2)保存私密信息

iOS的 keychain服务提供了一种安全的保存私密信息额方式,相对于NSUserDefaults和文件保存等一般方式,Keychain保存更为安全,而且Keychain里保存的信息不会因App被删除而丢失。所以在重装App之后,Keychain里的数据还能使用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 10:17:19

iOS钥匙串Keychain浅析的相关文章

ios下 KeyChain 的研究

iOS的keyChain是一个相对独立的空间,当我们的程序(App)被替换或者删除时并不会删除保存在keyChain的内容.相对于NSUserDefaults.plist文件保存等一般方式,keychain保存更为安全.所以我们会用keyChain保存一些私密信息,比如密码.证书.设备唯一码(UDID)等等. 我们可以把KeyChain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionary进行add.update.get.delete这四个操作.

[转] ios中KeyChain用途

转自  http://www.2cto.com/kf/201311/255684.html 一.在应用间利用KeyChain共享数据 我们可以把KeyChain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionary进行add. update.get.delete这四个操作.对于每一个应用来说,KeyChain都有两个访问区,私有区和公共区.私有区是一个sandbox,本 程序存储的任何数据都对其他程序不可见.而要想在将存储的内容放在公共区,需要先

ios中KeyChain用途

一.在应用间利用KeyChain共享数据 我们可以把KeyChain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionary进行add.update.get.delete这四个操作.对于每一个应用来说,KeyChain都有两个访问区,私有区和公共区.私有区是一个sandbox,本程序存储的任何数据都对其他程序不可见.而要想在将存储的内容放在公共区,需要先声明公共区的名称,官方文档管这个名称叫“keychain access group”,声明的方法

IOS Http断点续传浅析

下载LOFTER客户端IOS Http断点续传浅析 http实现断点续传的关键地方就是在httprequest中加入“Range”头. //设置Range头,值:bytes=x-y;x:开始字节,y:结束字节,不指定则为文件末尾[request addValue:@"bytes=500-" forHTTPHeaderField:@"Range"]; 如果服务器正确响应的话,就可以顺利续传:如果服务器不支持,那就只能用其它方法了. 经过测试,服务器的不支持分为两种情况

Keychain 浅析

http://www.cnblogs.com/Jenaral/p/5663096.html 什么是Keychain? 根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌.苹果自己用keychain来保存Wi-Fi网络密码,VPN凭证等等.它是一个在所有app之外的sqlite数据库. 如果我们手动把自己的私密信息加密,然后通过写文件保存在本地,再从本地取出不仅麻烦,而且私密信息也会随着App的删除而丢失.iOS的

ios中KeyChain用途(整理)

原文地址http://blog.csdn.net/u011439689/article/details/18707387 一.在应用间利用KeyChain共享数据 我们可以把KeyChain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionary进行add.update.get.delete这四个操作.对于每一个应用来说,KeyChain都有两个访问区,私有区和公共区.私有区是一个sandbox,本程序存储的任何数据都对其他程序不可见.而要想在将存

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

IOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成. 二.UUID(Universally Unique Identifier)  UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码. 三.MAC Address 四.OPEN UDID 五.广告标

iOS钥匙串Keychain--初级使用+浅浅的理解

我的邮件:[email protected] 如果有这篇文章对您有帮助就点下推荐或者随意评论一个呗,谢谢谢谢,随便转载,标明出处就好. 4.Keychain 使用? ---为了实用最大化我觉得我应该直接先说使用! 当然是使用第三方库啦:sskeychain 3000+星星的库不开玩笑.github地址:https://github.com/soffes/sskeychain 导入完之后首先,编译一下有无错. 如果是自己手动导入: 1.把SSKeychain.h SSKeychain.m SSKe

iOS中keyChain 实现UUID 设备唯一标识符碰到的问题

废话少说,置入正题: 最近在研究实现获取设备唯一标识符时,经过各方面调研,发现使用苹果官方推荐的keyChain还是挺不错的. Apple提供了一个叫GenericKeychain的例子程序,在这里:http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_h.html#//apple_ref/doc/uid/DTS40007797-Classes