Шифровать пароли в базе данных SQLite? - PullRequest
1 голос
/ 08 ноября 2011

У меня есть 2 двух текстовых поля, одно для имени пользователя и пароля: когда пользователь вводит имя пользователя и пароль и нажимает кнопку «Сохранить», имя пользователя и пароль сохраняются в базе данных SQLite.

Я хочу сохранить имя пользователя и пароль в зашифрованном виде для большей безопасности.

Ответы [ 4 ]

1 голос
/ 08 ноября 2011

Я определяю 2 способа шифрования и дешифрования вашей строки, выбирая, какой вам когда-либо легко.

Способ 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] );
0 голосов
/ 08 ноября 2011

Я думаю, вы можете использовать класс SecKeyWrapper.Вы можете найти его на сайте разработчика:

http://developer.apple.com/library/ios/#samplecode/CryptoExercise/Listings/Classes_SecKeyWrapper_h.html

0 голосов
/ 08 ноября 2011

Если вы храните учетные данные пользователя, лучший способ сделать это - использовать API цепочки для ключей. iOS Secure Coding How-Tos на сайте Apple - отличное место для начала. В частности, вы хотите посмотреть на Как безопасно хранить информацию в цепочке для ключей или извлекать информацию при необходимости? .

Использование API цепочки для ключей обеспечит правильное шифрование и защиту пароля пользователя.

0 голосов
/ 08 ноября 2011

Используйте этот алгоритм хеширования 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, а затем сравнить этот хеш с полем пароля, хранящимся в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...