我对应用程序购买和使用钥匙串都是新手。我正在使用目标 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)];
这一切都很好。
但是这种用法的合适键是什么?我只是随机挑选了一些进行测试。
谢谢,我知道我问了很多,但我已经阅读了文档和堆栈溢出以及各种教程,但我对此并没有真正了解。