【问题标题】:Retrieving password and username from keychainItemWrapper iOS从 keychainItemWrapper iOS 中检索密码和用户名
【发布时间】:2017-08-16 17:00:20
【问题描述】:

我正在尝试使用KeychainItemWrapper.h 和keychainWrapperItemWrapper.m 来存储用户凭据,例如用户名和密码。我目前在用户第一次登录时存储如下:

KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"login" accessGroup:nil];
[keychain setObject:_usernameField.text forKey:(__bridge id)kSecValueData];
[keychain setObject:_passwordField.text forKey:(__bridge id)kSecAttrAccount];

这会将值存储在钥匙串中。但是下次用户打开应用程序时,我想再次检索用户名和密码。但是,当我调用以下命令时:

NSString *password_ = [keychain objectForKey:(__bridge id)kSecValueData];
NSString *username_ = [keychain objectForKey:(__bridge id)kSecAttrAccount];

似乎我得到了奇怪的加密密钥,例如:<6f78696c 69676874 2d746573 74> 有没有办法检索用户名和密码的原始字符串? 我以前从未使用过钥匙串,任何帮助将不胜感激!

【问题讨论】:

标签: ios objective-c iphone keychainitemwrapper security.framework


【解决方案1】:

如果您使用上面链接的包装器,https://koenig-media.raywenderlich.com/uploads/2014/12/KeychainWrapper.zip。您可以像这样设置用户名和密码。 我重命名了 myObjectForKey 和 mySetObject 的方法。你可以初始化

self.keychainWrapper = [[KeychainWrapper alloc] init];

在您的 init 方法中。

//save user and password
[self.keychainWrapper setObject:username forKey:(__bridge id)kSecAttrAccount];
[self.keychainWrapper setObject:_password forKey:(__bridgeid)kSecValueData];
[self.keychainWrapper writeToKeychain];

//retrieve username and password
NSString *username = [self.keychainWrapper objectForKey:(__bridge id)kSecAttrAccount];
NSString *password = [self.keychainWrapper objectForKey:(__bridge id)kSecValueData];

【讨论】:

    【解决方案2】:

    为什么不用这个https://redflowerinc.com/keychain-wrapper-in-objective-c/

    NS_ASSUME_NONNULL_BEGIN
    
    @interface KeyChainWrapper : NSObject
    +(NSMutableDictionary*) queryDictionary:(NSString*) identifier;
    +(NSString*) searchKeychainCopyMatching:(NSString*) identifier;
    +(bool) createKeychainValue:(NSString*) value forIdentifier:(NSString*) identifier;
    +(bool) updateKeychainValue:(NSString*) password forIdentifier:(NSString*) identifier;
    +(void) deleteKeychainValue:(NSString*) identifier;
    @end
    
    NS_ASSUME_NONNULL_END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2019-12-07
      • 1970-01-01
      • 2015-06-03
      • 2015-09-24
      • 2012-11-02
      • 1970-01-01
      相关资源
      最近更新 更多