Ios 如果kSecAttrIsPermanent设置为NO,会发生什么情况?

Ios 如果kSecAttrIsPermanent设置为NO,会发生什么情况?,ios,objective-c,commoncrypto,Ios,Objective C,Commoncrypto,在iOS上使用AppleslibcommonCrypto.dylib时,kSecAttrIsPermanent属性的用法是什么 说: 相应的值为CFBooleanRef类型,指示是否 此加密密钥将永久存储 什么原因不在钥匙链中永久存储某些东西?然后会存储多长时间?(直到重新启动?直到关闭应用程序?直到卸载应用程序?这是生成密钥时在SecKeyGeneratePair中使用的参数 从 kSecAttrIsPermanent-如果此密钥存在且布尔值为true,则该密钥或密钥对将添加到默认密钥链中

在iOS上使用Apples
libcommonCrypto.dylib
时,kSecAttrIsPermanent属性的用法是什么

说:

相应的值为CFBooleanRef类型,指示是否 此加密密钥将永久存储



什么原因不在钥匙链中永久存储某些东西?然后会存储多长时间?(直到重新启动?直到关闭应用程序?直到卸载应用程序?

这是生成密钥时在
SecKeyGeneratePair
中使用的参数

kSecAttrIsPermanent
-如果此密钥存在且布尔值为true,则该密钥或密钥对将添加到默认密钥链中


在这种情况下,如果您提供了这个参数并且它为false,那么您将在内存中接收密钥,但它不会被持久化到密钥链(在磁盘上)。在应用程序仍在运行的情况下,它将持续多长时间,除非您自己在之后继续使用它。

您尝试过吗?设置为否,并观察在应用程序终止后您存储的数据是否仍然存在?我们可以想象,您希望暂时存储一些安全数据,然后将其删除,如果您将CFBooleanRef设置为否,则可以执行一次删除操作?好的。这有点令人困惑,因为属性也在文档中链接,用于保存和加载函数。但是你的回答对我来说很有意义,谢谢。