如何获取在iOS Keychain中创建和存储的密钥的唯一标识符

如何获取在iOS Keychain中创建和存储的密钥的唯一标识符,ios,swift,keychain,Ios,Swift,Keychain,当我使用SecKeyCreateRandomKey在Keychain中创建新密钥时,我希望获得该密钥的UUID(或任何其他唯一的id),并在将来使用该id在Keychain中搜索该密钥。我怎么做 到目前为止,我只提供了kSecAttrApplicationTag作为将来查询的属性,但是这个解决方案是有问题的,因为可以用这个标记创建任意数量的键 当查看密钥如何存储在Keychain数据库中时,我看到那里有一个UUID字段,尽管我找不到在应用程序级别访问它的方法 我已经使用了keychain第三个库

当我使用
SecKeyCreateRandomKey
在Keychain中创建新密钥时,我希望获得该密钥的
UUID
(或任何其他唯一的
id
),并在将来使用该
id
在Keychain中搜索该密钥。我怎么做

到目前为止,我只提供了
kSecAttrApplicationTag
作为将来查询的属性,但是这个解决方案是有问题的,因为可以用这个标记创建任意数量的键

当查看密钥如何存储在Keychain数据库中时,我看到那里有一个
UUID
字段,尽管我找不到在应用程序级别访问它的方法


我已经使用了keychain第三个库来实现这一点,如果您觉得满意的话,请查看这个库,我认为它很简单,而且最适合您的场景。

您可以使用
kSecAttrApplicationTag
存储具有唯一UID的自定义方案,您可以独立生成该方案

例如:

kSecAttrApplicationTag -> {COMMON_ATTRIBUTE_PART}-{YOUR_GENERATED_UID}

因此,您可以存储生成的UID,并知道公共属性部分,以便以后搜索密钥。这样你就不必依赖钥匙链生成的UUID了。

谢谢你的建议,尽管你提到的库没有在引擎盖下使用
SecKeyCreateRandomKey
,所以这与我的情况完全无关谢谢你的回答,我实际上已经这样做了,不幸的是,正如我在问题中所描述的,此解决方案有一个缺点,您可以在Keychain中存储任意多个具有相同标记的密钥。我想知道是否有一种方法可以在钥匙链级别上拥有唯一的id,因此不可能在钥匙链中创建另一个具有相同id的钥匙。