1

我对应用程序购买和使用钥匙串都是新手。我正在使用目标 C 和 KeychainItemWrapper。

现在我只想在钥匙串中存储一个数字。我不希望应用程序之外的任何人能够更改它,虽然我不太关心是否有人能看到它,但我想了解什么是加密的,什么不是,因为我以后可能想存储私人数据。

即使在删除并重新安装应用程序之后,我也已成功存储并检索了一个号码,但我完全不确定我是否做对了。如何选择标识符以及哪些键是合适的?

如您所见,我对这些概念还不清楚。

第一个问题:什么是“标识符”,为什么我不能使用多个?

这是代码:

@property (nonatomic, strong) KeychainItemWrapper *myChain;
    
     . . .

if (myChain == nil)
{
    // first question: what identifier should I use?        
    myChain = [[KeychainItemWrapper alloc] initWithIdentifier:@"test" accessGroup:nil];
}

因此,一旦我使用了标识符“test”,我似乎就在这款手机上坚持使用它。如果我使用任何其他值,则 KeychainItemWrapper 将失败“无法添加项目”。我完全不明白这一点。如何创建不同的标识符?我想要还是需要?这究竟是什么标识?

继续存储。根据下面的代码,我可以存储数字、描述和评论。

// storing:
// let’s start with the number 10
NSString *testNum = @"10";
NSString *testDescr = @"this is a line of text";
[myChain setObject:testDescr forKey:(__bridge id)(kSecAttrDescription)];
[myChain setObject:testNum forKey:(__bridge id)(kSecValueData)];
[myChain setObject:@"This is a comment" forKey:(__bridge id)(kSecAttrComment)];


// retrieving:
NSString *descOut = [myChain objectForKey: (__bridge id)kSecAttrDescription];
NSData *numberOut = [myChain objectForKey: (__bridge id)(kSecValueData)];

这一切都很好。

但是这种用法的合适键是什么?我只是随机挑选了一些进行测试。

谢谢,我知道我问了很多,但我已经阅读了文档和堆栈溢出以及各种教程,但我对此并没有真正了解。

4

0 回答 0