SecureNSUserDefaults 1.0.1

SecureNSUserDefaults 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后一次发布2016年3月

Niels Mouthaan 维护。



  • 作者
  • Niels Mouthaan

NSUserDefaults 的 iOS 和 Mac OS X 分类,包括使用强 AES 加密方法以安全方式保存数据。

NSUserDefaults 是存储简单数据的一种很好的方式。然而,信息是以未加密的方式存储的,容易被人们(例如,使用 iExplorer)读取。如果您想要以安全的方式存储特定的信息,使其难以被用户看到实际内容,SecureNSUserDefaults 可能正是您所需要的。

安装

我强烈推荐您使用 CocoaPods 来安装此分类。

手动

  1. 将文件 NSUserDefaults+SecureAdditions.hNSUserDefaults+SecureAdditions.m 复制到您的项目中;
  2. 安装 CocoaSecurity
  3. 在任何需要的地方导入 NSUserDefaults+SecureAdditions.h

用法

配置密钥

在使用 SecureNSUserDefaults 来获取/保存加密数据之前,请确保设置一个 密钥

[[NSUserDefaults standardUserDefaults] setSecret:@"your_secret_goes_here"];

永远不要在文件系统中或您的用户首选项中存储密钥,而应在代码中的某个静态位置存储它。最好使用一个 salt 字符串与特定设备的信息结合使用。

保存信息

保存信息与通常一样简单。只需在常规 NSUserDefaults 方法前加上 密钥 即可。例如:

[[NSUserDefaults standardUserDefaults] setSecretObject:@"something_only_you_may_know" forKey:@"the_key"];

所有可用方法

- (void)setSecretBool:(BOOL)value forKey:(NSString *)defaultName;
- (void)setSecretFloat:(float)value forKey:(NSString *)defaultName;
- (void)setSecretInteger:(NSInteger)value forKey:(NSString *)defaultName;
- (void)setSecretDouble:(double)value forKey:(NSString *)defaultName;
- (void)setSecretURL:(NSURL *)url forKey:(NSString *)defaultName;
- (void)setSecretObject:(id)value forKey:(NSString *)defaultName;

获取信息

获取信息的方式相同

[[NSUserDefaults standardUserDefaults] secretStringForKey:@"the_key"];

所有可用方法

- (BOOL)secretBoolForKey:(NSString *)defaultName;
- (NSData*)secretDataForKey:(NSString *)defaultName;
- (NSDictionary*)secretDictionaryForKey:(NSString *)defaultName;
- (float)secretFloatForKey:(NSString *)defaultName;
- (NSInteger)secretIntegerForKey:(NSString *)defaultName;
- (NSArray *)secretStringArrayForKey:(NSString *)defaultName;
- (NSString *)secretStringForKey:(NSString *)defaultName;
- (double)secretDoubleForKey:(NSString *)defaultName;
- (NSURL*)secretURLForKey:(NSString *)defaultName;
- (id)secretObjectForKey:(NSString *)defaultName;

请注意,如果密钥不存在或数据无法解密,则返回 NO0nil

测试

SecureNSUserDefaultsTests 包含多个测试案例。克隆整个 Xcode 项目并运行测试以检查是否一切仍然正常。

联系方式

如果您有问题或建议,请随时通过 Twitter 联系我。

致谢

许可证(MIT)

版权所有(c)2016 Niels Mouthaan

在此特此许可任何人无偿获得本软件及其相关文档副本(“软件”),在不限于使用、复制、修改、合并、发布、分发、转授或销售软件副本的权利,并允许获得软件的人进行上述操作,但以下条件除外:

上述版权声明和许可声明应包含在软件的所有副本或实质部分。

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的还是其他形式的,包括但不限于适用于特定目的的适用性、非侵权性及其质量保证。在任何情况下,作者或版权所有者都不应对其有责任,也不承担任何索赔、损害或责任,无论是否有合同、侵权或其他行为,以及由此产生的、与其无关的或与其相关的软件或其使用或其他操作。