我需要在我的应用程序中实现离线登录。目前,我正在密钥链中存储密码,至少在应用程序在线时用于登录至少一次。现在我不检查用户名密码组合。如果我有一个设备的多个用户,只存储密码是不够的。那么你们谁都可以提出一些可以在没有安全漏洞的情况下完成的事情。我们如何以加密格式在钥匙串中存储用户名 - 密码组合
1
A
回答
1
我建议你存储的密码,使用登录的一个关键。如:[email protected]/password
。
您可以编码密码的md5
值来提高安全性也
0
可以使用NSURLCredential依靠这个link
商店
NSURLCredential *credential;
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
[[NSURLCredentialStorage sharedCredentialStorage] setCredential:credential forProtectionSpace:self.loginProtectionSpace];
获取存储数据
NSURLCredential *credential;
NSDictionary *credentials;
credentials = [[NSURLCredentialStorage sharedCredentialStorage] credentialsForProtectionSpace:self.loginProtectionSpace];
credential = [credentials.objectEnumerator nextObject];
NSLog(@"User %@ already connected with password %@", credential.user, credential.password);
0
您可以将其保存在设计,节省设备钥匙扣敏感信息。从这个Ray Wenderlich tutorial与SHA512
#import "KeychainWrapper.h"
#include <CommonCrypto/CommonDigest.h>
-(void)createSHA512andSaveToKeychain:(NSString*)unencryptedPasswd {
const char *passwdBytes= [unencryptedPasswd cStringUsingEncoding:NSUTF8StringEncoding];
NSData *passwordData = [NSData dataWithBytes:passwdBytes length:unencryptedPasswd.length];
uint8_t digest[CC_SHA512_DIGEST_LENGTH];
CC_SHA512(passwordData.bytes, passwordData.length, digest);
NSMutableString *encryptedPasswd= [NSMutableString stringWithCapacity:CC_SHA512_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA512_DIGEST_LENGTH; i++) {
[encryptedPasswd appendFormat:@"%02x", digest[i]];
}
// Save the password in the device keychain
KeychainWrapper *keychainWrapper = [[KeychainWrapper alloc] init];
[keychainWrapper mySetObject:encryptedPasswd forKey:(__bridge id)kSecValueData];
[keychainWrapper writeToKeychain];
}
下载的包装和加密密码找回密码:
// Retrieve the pwd from the device keychain
KeychainWrapper *keychainWrapper = [[KeychainWrapper alloc] init];
NSString *pwd = [keychainWrapper myObjectForKey:@"v_Data"];
相关问题
- 1. 钥匙串来存储和读取用户名和密码
- 2. 如何使用iOS钥匙串存储多个用户名和密码?
- 3. 使用钥匙串在xcode 4中存储用户名和密码
- 4. 如何使用钥匙串验证用户名和密码
- 5. 使用Monotouch存储和读取密码钥匙密码
- 6. 钥匙串密码陷阱
- 7. 如何检查用户名和密码是否已被保存在钥匙串
- 8. 如何在JSONStore中存储加密密钥/密码
- 9. 从加密钥匙从内存加密++
- 10. 苹果钥匙串正在失去用户名/密码信息
- 11. 如何在iPad中的钥匙串实用程序中存储密码
- 12. 如何使用钥匙串访问在iPhone App中存储密码?
- 13. Mac上的用户名密码钥匙串对话框的API
- 14. 保存用户名和密码组合
- 15. 在钥匙串中保存加密的字符串
- 16. 我可以将PGP钥匙圈存储在csp参数密钥容器中吗?
- 17. 无密码解锁OSX钥匙串?
- 18. 在模拟器上的钥匙串中保存密码
- 19. 在iOS中保存电子邮件/密码到钥匙串
- 20. 生成密钥AES 256加密钥匙串
- 21. 如何在.NET Core中存储机器密钥以加密/解密auth cookie
- 22. 存储加密密码和salt或仅存储加密密码?
- 23. 如何在设备内存中存储用户名密码
- 24. 将用户名保存在密钥中,并在存在密钥时加载密钥
- 25. 添加密码到没有钥匙串的私钥ACL
- 26. 在PHP中使用AES加密时,应该在哪里存储密码密钥?
- 27. 从钥匙串中检索存储的密码在XCode外部失败
- 28. 我可以在azure密钥保管库中存储用户名和密码的详细信息吗?
- 29. 如何使用钥匙串保存密码,如GenericKeychain示例代码
- 30. 如何在钥匙串中保存CFUUID
待办事项阴要记住所有用户或刚刚过去的一个? – CZ54
@bobby:需要记住所有的用户 – iOSManiac
所以我建议你存储密码,使用登录作为密钥。如:[email protected] /密码。您可以编码密码的md5值以提高安全性 – CZ54