SecureStorage
一个轻量级的库,可让您使用AES 256加密存储任何Swift类型。加密密钥在运行时生成并发送到设备钥匙串。
安装
SecureStorage
可以通过CocoaPods安装。
target 'ProjectName' do
pod 'SecureStorage'
end
使用
SecureStorage
允许你在UserDefaults
、共享默认值或磁盘上存储您的Swift类型。共享默认值允许您在应用程序之间共享数据。加密密钥还可以存储在共享密钥链中,以实现应用程序间密钥的共享。
初始化
SecureStorage
的初始化有三部分
存储位置
您可以在初始化过程中选择存储位置。可用值为
-
UserDefaults:这是默认的存储位置。在没有提供存储位置时使用。
let secureStorage = SecureStorage(keychainAccessGroup: nil)
-
文件位置:如果在初始化过程中提供了文件夹路径,加密数据将作为该文件夹中的文件存储。密钥将用作文件名。如果提供的位置已存在文件或位置不是目录,将引发初始化失败错误。
let secureStorage = try! SecureStorage(fileLocation: fileLocation, keychainAccessGroup: nil)
-
共享默认设置:`SecureStorage`还允许您在共享默认设置中存储加密数据,以实现应用程序间的加密数据共享。您需要在应用程序的功能中启用App Groups,并在初始化`SecureStorage`时提供应用程序组标识符。如果无法初始化共享默认设置,将引发初始化失败错误。
let secureStorage = try! SecureStorage(sharedDefaultsId: "group.com.your.company.YourApp", keychainAccessGroup: nil)
密钥链组
您可以选择将加密密钥存储在共享密钥链中,以在应用程序间共享密钥。这可以与共享默认设置结合使用,以在应用程序间共享加密对象。要使用此选项,您需要在应用程序功能中启用密钥链共享,并在`SecureStorage`初始化期间提供密钥链组标识符。
// Below initialization stores data in shared defalults
// and encryption keys are stored in shared keychain
let secureStorage = try! SecureStorage(sharedDefaultsId: "group.com.your.company.YourApp", keychainAccessGroup: "your.keychain.sharing.identifier")
密钥链访问控制
`SecureStorage`还允许应用程序设置密钥链访问级别策略。默认值设置为最严格的策略`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`。如果您需要选择不同的策略,您可以在初始化时选择。
let secureStorage = SecureStorage(keychainAccessGroup: nil, keychainAccessControl: kSecAttrAccessibleAlways)
访问对象
初始化后,从`SecureStorage`存储和检索Swift类型非常简单。
// Initialize SecureStorage
let secureStorage = SecureStorage(keychainAccessGroup: nil)
// Store data
try secureStorage.store(textViewToStore.text, for: keyForStorage)
// retrieve data
let text = try secureStorage.fetchObject(for: keyForStorage)
// delete data
secureStorage.removeObject(for: keyForStorage)
许可证
SecureStorage遵循MIT许可证发布。