iOS Keychain的使用

在 iOS 开发中,Keychain 是一个强大的安全存储机制,用于存储敏感信息,如密码、证书、密钥、会话令牌等。Keychain 提供了比 NSUserDefaults 更高的安全性,因为它将数据存储在受保护的区域,并且只有应用程序本身可以访问这些数据。以下是 Keychain 的详细作用和用途。
Keychain 的作用
安全存储:

加密存储:Keychain 使用硬件加密技术来保护存储的数据,确保数据在设备上安全。
访问控制:通过访问控制列表(ACL)控制数据的访问权限。
持久化:

数据在应用程序重新安装后仍然存在,除非用户重置设备或删除所有应用数据。
跨应用共享:

通过 Keychain Access Groups,多个应用程序和扩展可以共享同一份 Keychain 数据。
自动备份:

Keychain 数据可以与 iCloud 备份一起自动备份,确保数据在设备更换时仍然可用。
系统管理:

Keychain 由操作系统管理,提供了一致的安全性和稳定性。
Keychain 的用途
存储密码和凭证:

用户登录凭证(如用户名和密码)。
OAuth 令牌和会话令牌。
存储证书和密钥:

SSL/TLS 证书。
加密密钥(对称密钥和非对称密钥)。
存储敏感信息:

支付信息。
个人身份信息(PII)。
跨应用共享数据:

主应用和其扩展(如 Today Extensions、WatchKit 扩展、SiriKit 扩展等)之间的数据共享。
不同应用之间的数据共享(通过相同的 Access Group)。
自动备份:

确保关键数据在设备更换时仍然可用。

使用教程

1.pod 导入 pod 'UICKeyChainStore'
2.配置 Capabilities
3.配置 Entitlements 文件
配置 Keychain Access Groups,点击+号,新增string $(AppIdentifierPrefix)+服务名即可 ,服务名对应代码中的服务名
4.导入头文件 #import <UICKeyChainStore/UICKeyChainStore.h>
5.简单使用教程

- (void) writeToKeyChain{
    UICKeyChainStore *keychain = [UICKeyChainStore keyChainStoreWithService:@"aaa.bleTest"];
    // 存储数据
    [keychain setString:@"mySecretPassword" forKey:@"password"];
}

- (void) getFromKeyChain{
    UICKeyChainStore *keychain = [UICKeyChainStore keyChainStoreWithService:@"aaa.bleTest"];
    // 读取数据
    NSString *sercet = [keychain stringForKey:@"password"];
    NSLog(@"钥匙串读取-----%@---%@",sercet,keychain[@"password"]);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容