我有两个文本字段,一个用于用户名和密码:当用户输入用户名和密码并单击“保存”按钮时,用户名和密码将保存在SQLite数据库中。
我希望以加密格式保存为用户名和密码,以提高安全性。
答案 0 :(得分:1)
我正在定义两种加密和解密字符串的方法,选择哪种方式你很容易。
方式1
- (NSData*) encryptString:(NSString*)plaintext withKey:(NSString*)key {
return [[plaintext dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptWithKey:key];
}
- (NSString*) decryptData:(NSData*)ciphertext withKey:(NSString*)key {
return [[[NSString alloc] initWithData:[ciphertext AES256DecryptWithKey:key]
encoding:NSUTF8StringEncoding] autorelease];
}
方式2
NSString *plainString = @"This string will be encrypted";
NSString *key = @"YourEncryptionKey"; // should be provided by a user
NSLog( @"Original String: %@", plainString );
NSString *encryptedString = [plainString AES256EncryptWithKey:key];
NSLog( @"Encrypted String: %@", encryptedString );
NSLog( @"Decrypted String: %@", [encryptedString AES256DecryptWithKey:key] );
答案 1 :(得分:0)
使用此MD5哈希算法保存密码
const char *cStr = [self UTF8String];
unsigned char result[16];
CC_MD5( cStr, strlen(cStr), result ); // This is the md5 call
return [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
在检索时,您还必须先将字符串转换为MD5,然后将该哈希值与存储在数据库中的密码字段进行比较。
答案 2 :(得分:0)
如果要存储用户的凭据,最好的方法是使用Keychain API。 Apple网站上的iOS Secure Coding How-Tos是一个很好的起点。特别要查看How do I store information securely in the keychain or retrieve the information when needed?。
使用Keychain API可确保正确加密和保护用户密码。
答案 3 :(得分:0)
我认为您可以使用SecKeyWrapper类。您可以在开发者网站上找到它: