iOS Keychain偶尔会返回空字符串
我写了非常安全的应用程序(用于银行),并将私钥保存在钥匙串中。 我使用以下代码保留私钥:
+(void)savePrivatekey:(NSString *)Key
{
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"pKey" accessGroup:nil];
[keychain setObject:Key forKey:(id)kSecValueData];
[keychain release];
}
并使用以下代码获取私钥:
+(NSString *)privateKey
{
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"pKey"accessGroup:nil];
NSString *privateKey = [keychain objectForKey:(id)kSecValueData];
[keychain release];
return privateKey;
}
出于安全原因,我不把私钥保存在本地变量中。 因为每次对服务器的调用都需要我调用的私钥来很多次地运行“GetPrivateKey”。 也许这就是为什么有时我从钥匙串空字符串中获得。 我想不出为什么会发生这种情况。 我注意到,在大多数情况下,这发生在应用程序从后台返回时,但不仅...谢谢...
我给苹果的工程师开了票,他们回应我说:
当您最初创建钥匙串项目时,您是否设置了kSecAttrAccessible属性?
我总是创建相同形状的钥匙串:KeychainItemWrapper * keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@“pKey”accessGroup:nil];
有谁知道他们的意图是什么? 谢谢...
关于这个,我回答了我自己的问题。 我不确定这是否是您的确切问题,因为您的代码似乎看起来/工作正常。 所以关于您的钥匙串访问,我猜测它有点不同。 这可能会也可能不会有帮助,但可能会引导您朝正确的方向发展。
iOS KeyChain不从后台检索值
如果你的班级每次使用ARC,下面的内容都适用于我。
KeychainItemWrapper *testKeychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"AppUniqueID" accessGroup:nil];
NSString *privateKey = [testKeychain objectForKey:(__bridge id)(kSecValueData)];
NSLog(@"Private Key: %@ n", privateKey);
链接地址: http://www.djcxy.com/p/83275.html