【问题标题】:Encrypting and Decrypting storage file加密和解密存储文件
【发布时间】:2017-02-03 09:22:43
【问题描述】:

我将所有CoreDataNSUserDefault 值存储在以编程方式创建的cdb 存储文件中,并将其上传到用户的iCloud 以备份他的数据。因此,他可以从任何设备恢复他的数据。

由于cdb 存储文件包含一些敏感数据,并且该文件可以从iCloud 复制到计算机并且可以使用一些sql 浏览器打开,因此我想在备份之前以某种方式加密文件并在恢复时解密。我想知道有什么方法或工具可以做到这一点。

【问题讨论】:

  • 为什么不使用任何加密/解密算法,如 AES 128,256 等。您可以参考 Apple 文档 Cryptography concepts in Depth 了解更多详情
  • 很多,一定要问用户密码才能使用
  • 是否可以使用 AES @DipenPanchasara 加密文件?
  • 是的,它可以使用 AES,但是小文件只有大文件会在应用程序中产生内存问题,为什么要加密/解密整个文件而不是表的属性?更好地加密数据库实体中的特定信息,而不是加密所有内容,这将减少不必要的操作,添加额外的安全层,创建带有密码保护的文件。
  • 更多,CoreData支持内置加密功能,使用NSPersistentStoreFileProtectionKey加密文件。查看this blog for File Protection 的更多详细信息。检查这个sample for coredata encryption using SQLCiper on github.

标签: ios objective-c core-data encryption


【解决方案1】:

试试 RNCryptor https://github.com/RNCryptor/RNCryptor

基本密码使用

斯威夫特

// Encryption
let data: NSData = ...
let password = "Secret password"
let ciphertext = RNCryptor.encryptData(data, password: password)

// Decryption
do {
    let originalData = try RNCryptor.decryptData(ciphertext, password: password)
    // ...
} catch {
    print(error)
}

Obj-C

// Encryption
NSData *data = ...
NSString *password = @"Secret password";
NSData *ciphertext = [RNCryptor encryptData:data password:password];

// Decryption
NSError *error = nil;
NSData *plaintext = [RNCryptor decryptData:ciphertext password:password error:&error];
if (error != nil) {
    NSLog(@"ERROR:%@", error);
    return
}
// ...

【讨论】:

  • 我猜这不是加密文件
  • 文件里面,只有数据!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多