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

上一篇: iOS Keychain occasionally return empty string

下一篇: Replicate via pglogical on a hot