在CoreData中使用ValueTransformer加密用户的敏感信息

简单的方法!
对于那些正在使用核心数据并且:

  1. 有一天,您公司的某个部门要求您更改存储在SQLite中的所有字符串以进行加密
  2. 或者只是希望您的用户数据能从越狱的设备中安全

如果正确使用Core Data,它将是一个非常方便的应用程序框架。 但是大多数时候人们没有! 这就是为什么您听到有人喊着让我们开始使用Realm的原因,甚至从根本上说,为什么不编写我们自己的SQLite包装器。

好吧,将我们的希望投向新技术并认为新的lib可以解决当前的所有问题始终是我们的本性。 如果您正在使用具有多个人的应用程序,并且经常更新模型文件,那么幸运的是,轻量级迁移,映射模型崩溃会早晚找到您! 这将在我的下一篇文章中进行解释!

现在,让我们解决我们的问题!

为了简单起见,使用最少的代码即可达到我在此所讲的内容,我们将首先从模板创建一个新的Master and Detail App,然后在Xcode 9中检查核心数据。

检查您的核心数据模型应该是这样的。

继续并在模拟器中运行此代码,并在其中添加少量数据。

今天早上,您的安全部门说,如果不对用户数据进行加密,我们就永远不要将其存储在SQLite中,因为如果它是越狱的设备,那么任何人都可以看到该数据!

首先,苹果设备不容易被黑客入侵! 如果是越狱的设备,大多数情况下只有/曾经/希望越狱的用户! 好吧,可能还有其他情况,让我们仅加密织补数据!

让我们开始创建数据模型的下一个版本! 创建新版本的核心数据模型!

可转换意味着将其存储为数据,与二进制的区别在于调用了上下文的save:和fetch:,可转换将在过程中使用ValueTransformer进行额外的操作。

在这里,我们使用一个名为“ EncryptionTransformer”的类。

现在,让我们验证我们的工作是否有效,打开SQLite文件,我们应该看到这些基数为64的“ ==”:

工作完成了!
我开始写一些可以在iOS开发中使用的隐藏技巧。 苹果没有告诉您的内容(WADTY)。 告诉我你们最想知道的内容也将很有帮助! 敬请关注! (只需点击跟随按钮!)