Tech Leads: Repository archived due to inactivity in more than 6 months. Please remember to add a CODEOWNERS file to the root of the repository when unarchiving.
- A category which provides an encryption layer for NSUserDefaults to securely save data .
- Using strong AES 356-bit encryption
####Benefit:
Note: Remember to install dependency first
- CocoaSecurity 1.2.4 (https://github.com/kelp404/CocoaSecurity)
In the implementation file, import NSUserDefaults+SevenSecurityLayers.h
#import "NSUserDefaults+SevenSecurityLayers.h"
Initialize a secured UserDefaults with a secret key.
//Recommend: Should put the secret key in implementation file to secure your key.
//Warning: Must specify the secret key before using or you get **Exception**
NSUserDefault *pref = [[NSUserDefault securedUserDefaults] setSecretKey:@"Your secret key"];
// >>> DONE! That's it, a secured storage has been created already for you to save any data later. <<<
//Demonstrate saving data
[pref setBool:YES forKey:@"DataIsSecured"];
[pref setString:@"AES 356-bit" forKey:@"KindOfEncryption"];
[pref setString:@"v1.2.0 available" forKey:@"ObfuscateSecretKey"];
[pref setString:@"Able to save data without encryption" forKey:@"KeepOrigin"];
...
[pref synchronize];
//Demonstrate retrieving data
bool yourBool = [pref boolForKey:@"DataIsSecured"];
NSString * yourString = [pref stringForKey:@"KindOfEncrytion"];
...
###Advanced usage
-
v1.2.0 available
-
Obfuscate your secret key
Shouldn't use this
NSString * theSecretKey = @"putYourKeyHere";Try this way 👉
NSString * theSecretKey = @"".p.u.t.Y.o.u.r.K.e.y.H.e.r.e;
-
Store data without encryption
`[pref setObject:@"yourValue" forKey:@"yourKey.nonSecured"];` Or `[pref setObject:@"yourValue" forKey:@"yourKey".nonSecured];`
-
Migrate data to secured storage
`[NSUserDefaults migrate:[NSUserDefaults standardUserDefaults] to:pref clearSource:YES];`
NOTIFICATION_CANNOT_RETRIEVE_ENCRYPTED_DATA
NOTIFICATION_CANNOT_STORE_ENCRYPTED_DATA
NOTIFICATION_SECRET_KEY_NOT_SETNOTIFICATION_STORED_DATA_HAS_BEEN_VIOLATED
Seven Security Layers Solution supports the following property types:
- NSInteger
- NSString
- NSArray
- string+array
- NSDictionary
- NSURL
- NSData
- BOOL
- float
- double
Email: [email protected]
###Thanks to
- https://github.com/nielsmouthaan/SecureNSUserDefaults
- https://github.com/UrbanApps/UAObfuscatedString
###Dependencies
- CocoaSecurity 1.2.4 (https://github.com/kelp404/CocoaSecurity)
###Dependencies Installation
- git:
$ git clone git://github.com/kelp404/CocoaSecurity.git
$ cd CocoaSecurity
$ git submodule update --init
- CocoadPods:
addPodfile
in your project path
platform :ios
pod 'CocoaSecurity'
$ pod install