gpt4 book ai didi

ios - 访问钥匙串(keychain)中的所有(用户)帐户

转载 作者:行者123 更新时间:2023-11-29 12:40:47 24 4
gpt4 key购买 nike

我一直在四处寻找,但仍然没有找到答案。知道如何从钥匙串(keychain)返回所有 kSecAttrAccounts 吗?我想取回创建钥匙串(keychain)项时使用的每个标识符的列表,然后使用“[KeychainWrapper deleteItemFromKeychainWithIdentifier:identifier] 方法”选择要删除的标识符。

当我记得我在创建帐户时使用的用户名(标识符)时,它工作正常,但当你创建了很多用户名时却无法弄清楚如何让它们全部恢复。

我尝试了一种基本的 [dictionary objectForKey:(__bridge(id)kSecAttrAccount)] 但它没有成功。

非常感谢!!

毛滴虫

最佳答案

使用kSecMatchLimitAll 获取kSecMatchLimit 查询字典中的所有值

 (__bridge id)kSecMatchLimitAll, (__bridge id)kSecMatchLimit 

它将获取 kSecClassGenericPassword 钥匙串(keychain)中的所有密码。您也可以像这样使用其他 钥匙串(keychain)类

NSMutableDictionary *query = [NSMutableDictionary dictionaryWithObjectsAndKeys:
(__bridge id)kCFBooleanTrue, (__bridge id)kSecReturnAttributes,
(__bridge id)kSecMatchLimitAll, (__bridge id)kSecMatchLimit,
(__bridge id)kSecClassGenericPassword, (__bridge id)kSecClass, //change your class in query
nil];

CFTypeRef result = NULL;
SecItemCopyMatching((__bridge CFDictionaryRef)query, &result);
NSLog(@"%@", (__bridge id)result);
if (result != NULL) CFRelease(result);

编辑:删除您可以使用的应用的所有 key

+(void)deleteAllKeychainItems{


NSArray *secItemClasses = @[(__bridge id)kSecClassGenericPassword,
(__bridge id)kSecClassInternetPassword,
(__bridge id)kSecClassCertificate,
(__bridge id)kSecClassKey,
(__bridge id)kSecClassIdentity];
for (id secItemClass in secItemClasses) {
NSDictionary *spec = @{(__bridge id)kSecClass:secItemClass};
SecItemDelete((__bridge CFDictionaryRef)spec);
}

}

它将删除所有 keychain 项,包括所有帐户密码或相关值。

关于ios - 访问钥匙串(keychain)中的所有(用户)帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25025305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com