Awesome Open Source
Awesome Open Source

NSUserDefaults+SevenSecurityLayers.h (Obsoleted, this is no longer maintained)

  • A category which provides an encryption layer for NSUserDefaults to securely save data .
  • Using strong AES 356-bit encryption


* Secure user data just by one line of code.
* Support obfuscating your key in binary source
* Able to save data without encryption
* Enable to handle exceptional case via built-in NOTIFICATION
* Enable using standardUserDefaults as well as securedUserDefaults parallelly

Make donation for Hai Kieu's github

How to use

Note: Remember to install dependency first

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"];`
    `[pref setObject:@"yourValue" forKey:@"yourKey".nonSecured];`
  • Migrate data to secured storage

    `[NSUserDefaults migrate:[NSUserDefaults standardUserDefaults] to:pref clearSource:YES];`

Supported NOTIFICATION Events


Supported Encryption Types

Seven Security Layers Solution supports the following property types:

  • NSInteger
  • NSString
  • NSArray
  • string+array
  • NSDictionary
  • NSData
  • BOOL
  • float
  • double


Email: [email protected]

Make donation for Hai Kieu's github

###Thanks to

MIT License


###Dependencies Installation

  1. git:
$ git clone git://
$ cd CocoaSecurity
$ git submodule update --init
  1. CocoadPods:
    add Podfile in your project path
platform :ios
pod 'CocoaSecurity'
$ pod install

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
objective-c (10,948
ios (3,682