我想在设备中非常安全地存储一个键值对。但是,我想将数据保存到设备中的应用程序中。 删除应用后,此数据也会被删除。
NSUserdefault 不是很安全。
Keychain 是另一种选择,因为它是安全的,但即使在应用程序被删除后,它仍会保留数据。
我该怎么办? 有什么帮助吗?
答案 0 :(得分:2)
创建随机加密密钥。将加密密钥存储在钥匙串中。使用加密密钥加密数据。将加密数据存储在应用程序目录中的任何位置。如果要在还原时保留它,请将其存储在备份的某个位置(例如库/应用程序支持或NSUserDefaults)。如果您不希望它在恢复期间保留,请将其存储在库/缓存中(您可能需要对此进行一些研究;“系统可能会在系统磁盘空间非常少的情况下删除Caches目录”,因此存在丢失数据的危险,但无论如何你必须处理这种情况)。您也可以使用NSURLIsExcludedFromBackupKey
来避免备份。
删除应用后,将删除加密数据。您将随机密钥保留在钥匙串中,但这只是一个没有值的随机数。
答案 1 :(得分:0)
我使用了一个存储在keyachain中的标志,只要app第一次启动,它就会设置为true。
通过这种方式,我解决了我的应用问题,即使在第一次安装和启动后,也使用了钥匙串中已存储的数据。如果用户将删除该应用程序,则钥匙串将包含我的安全数据,但由于使用随机密钥加密,因此无用。