强>
<强> 强>
<强> 强>
- <李>
李> <李>
李> <李>
李>
- <李>
李> <李>
李> <李>
李>
强>
强>
//建立词典,用来传递参数 NSMutableDictionary * dictionary =, [[NSMutableDictionary 字典); ,//设置条目类别,我们用该条目存储普通密码,所以设置成kSecClassGenericPassword [dictionary setObject: (id) kSecClassGenericPassword forKey: (id) kSecClass]; ,//设置条目的id,比如“MyPasswordForFtp",条目id必须时NSDate,而不是NSString NSString * itemIDString =, @" MyPasswordForFtp"; * itemID=NSData [itemIDString dataUsingEncoding NSUTF8StringEncoding):; [dictionary setObject: itemIDforKey: (id) kSecAttrGeneric); ,//设置条目所属的服务和账户,为了避免重名,我们使用常见的反转域名规则,比如com.mykeychain.ftppassword NSString * account =, @" com.mykeychain.ftppassword"; NSString * service =, @" com.mykeychain.ftppassword"; [dictionary setObject: account forKey: (id) kSecAttrAccount]; [dictionary setObject: service forKey: (id) kSecAttrService]; ,//设置查询条件,只返回一个条目 [dictionary setObject: (id) kSecMatchLimitOne forKey: (id) kSecMatchLimit]; ,//设置查询条件,返回条目存储的数据,(kSecReturnData ==,真的) [dictionary setObject: (id) kCFBooleanTrue forKey: (id) kSecReturnData]; ,//开始查询 NSData * result =,零; OSStatus status =, SecItemCopyMatching ((CFDictionaryRef) dictionary ,, (CFTypeRef *),结果);
强>
强>
//建立词典,用来传递参数 NSMutableDictionary * dictionary =, [[NSMutableDictionary 字典); ,//设置条目类别,我们用该条目存储普通密码,所以设置成kSecClassGenericPassword [dictionary setObject: (id) kSecClassGenericPassword forKey: (id) kSecClass]; ,//设置条目的id,比如“MyPasswordForFtp",条目id必须时NSDate,而不是NSString NSString * itemIDString =, @" MyPasswordForFtp"; * itemID=NSData [itemIDString dataUsingEncoding NSUTF8StringEncoding):; [dictionary setObject: itemIDforKey: (id) kSecAttrGeneric); ,//设置条目所属的服务和账户,为了避免重名,我们使用常见的反转域名规则,比如com.mykeychain.ftppassword NSString * account =, @" com.mykeychain.ftppassword"; NSString * service =, @" com.mykeychain.ftppassword"; [dictionary setObject: account forKey: (id) kSecAttrAccount]; [dictionary setObject: service forKey: (id) kSecAttrService]; ,//设置条目数据,条目数据时NSDate NSString * password =, @" 123456“; NSData * itemData =, [password dataUsingEncoding NSUTF8StringEncoding):; [dictionary setObject: itemData forKey: (id) kSecValueData]; ,//添加条目到钥匙链 OSStatus status =, SecItemAdd ((CFDictionaryRef)字典,NULL);
强>
//建立查询字典 NSMutableDictionary * searchDictionary =, [[NSMutableDictionary 字典); ,//设置查询字典 [searchDictionary setObject: (id) kSecClassGenericPassword forKey: (id) kSecClass]; , NSString * itemIDString =, @" MyPasswordForFtp"; * itemID=NSData [itemIDString dataUsingEncoding NSUTF8StringEncoding):; [searchDictionary setObject: itemIDforKey: (id) kSecAttrGeneric); , NSString * account =, @" com.mykeychain.ftppassword"; NSString * service =, @" com.mykeychain.ftppassword"; [searchDictionary setObject: account forKey: (id) kSecAttrAccount]; [searchDictionary setObject: service forKey: (id) kSecAttrService]; ,//,建立更新字典 NSMutableDictionary * updateDictionary =, [[NSMutableDictionary 字典); ,//,设置要更新的新密码 时间=NSString *, newPassword @" 654321“; NSData * passwordData =, [newPassword dataUsingEncoding NSUTF8StringEncoding):; [updateDictionary setObject: passwordData forKey: (id) kSecValueData]; ,//进行更新 OSStatus status =, SecItemUpdate (searchDictionary (CFDictionaryRef), (CFDictionaryRef) updateDictionary);谈谈iOS钥匙扣的使用