测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | 自定义 |
发布上次发布 | 2016年5月 |
由 Fernando Arellano,Daniel Broad 维护。
提供了一种加密所有持久化数据的 Core Data 存储库。除了初始设置外,使用方式与 Core Data 完全相同,并且可以用于现有使用 Core Data 的项目。
cd ~/Documents/code/YourApp
git clone https://github.com/project-imas/encrypted-core-data.git
导航到 encrypted-core-data,突出显示 增量存储,然后单击 添加
SQLCipher 被添加为 ECD 内部的 git 子模块。应使用 git submodule init
和 git submodule update
来填充 sqlcipher 子模块目录,其中可以找到 sqlcipher.xcodeproj
并将其添加到项目中。
-DSQLCIPHER_CRYPTO_CC
和 -DSQLITE_HAS_CODEC
sqlcipher
添加到目标依赖项,并将 libsqlcipher.a
和 Security.framework
添加到连接库。$ sudo gem install cocoapods
。(有关详细信息,请参阅CocoaPods网站。)pod init
来创建Podfile。pod 'EncryptedCoreData', :git => 'https://github.com/project-imas/encrypted-core-data.git'
添加到Podfile中pod install
#import "EncryptedStore.h"
已知EncryptedStore在iOS 6.0到9.2版本上运行成功。
如果您希望设置自定义缓存大小和/或自定义数据库URL:创建一个NSDictionary来设置您的EncryptedStore的选项,替换customPasscode、customCacheSize和/或customDatabaseURL
NSDictionary *options = @{ EncryptedStorePassphraseKey: (NSString *) customPasscode,
EncryptedStoreCacheSize: (NSNumber *) customCacheSize,
EncryptedStoreDatabaseLocation: (NSURL *) customDatabaseURL
};
在您的应用程序委托源文件(即AppDelegate.m)中,您应该看到
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
如果您创建了一个具有自定义选项的NSDictionary,则用以下行替换该行
NSPersistentStoreCoordinator *coordinator = [EncryptedStore makeStoreWithOptions:options managedObjectModel:[self managedObjectModel]];
否则,用以下行替换该行
NSPersistentStoreCoordinator *coordinator = [EncryptedStore makeStore:[self managedObjectModel]:@"SOME_PASSCODE"];
确保将"SOME_PASSCODE"替换为您自己的密码。
在同一个文件中添加对EncryptedStore.h的导入
#import "EncryptedStore.h"
如果出现问题,可以添加-com.apple.CoreData.SQLDebug 1
以查看的所有由encryted-cored-data生成的加密日志。
缺失功能和已知错误在问题跟踪器上维护
以下是显示NSSQLiteStore和EncryptedStore之间差异的示意图。请注意,SQLite调用与封装它的层耦合相当紧密:
以下是执行在样本应用程序.sqlite文件上的Unix strings命令的输出。正如您所看到的,默认持久化存储将所有信息以明文形式保留:
版权所有 2012 - 2014 The MITRE Corporation,保留所有权利。
根据 Apache License,版本 2.0(“许可证”)授权;除非遵守许可证,否则您不得使用此作品。您可以在以下位置获取许可证的副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律规定或以书面形式明确同意,否则在许可证下分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可具体语言关于授权和限制的内容,请参阅许可证。