На iPhone песочница остановит любого, кто получит доступ к вашим паролям. на рабочем столе это не так просто.
Вы должны хранить пароли в виде хэшей, а не в виде открытого текста. Я верю, что это даст вам желаемые результаты без ущерба для функциональности. Единственная мысль, которую вы никогда не сможете сделать, - это снова получить доступ к паролю открытого текста - если вы хотите проанализировать его на прочность или передать его другой службе. В общем, хэши не жертвуют функциональностью.
Следующий код принимает пароль в rawPassword и сохраняет свой хэш SHA-1 в passwordHash.
#import <CommonCrypto/CommonDigest.h>
const char* utf8PasswordRepresentation = [rawPassword UTF8String];
unsigned char * rawHash = malloc(CC_SHA1_DIGEST_LENGTH);
CC_SHA1(utf8PasswordRepresentation, strlen(utf8PasswordRepresentation), rawHash);
NSMutableString* passwordHash = [NSMutableString CC_SHA1_DIGEST_LENGTH*2];
for (int i = 0 ; i< CC_SHA1_DIGEST_LENGTH; i++)
[passwordHash appendFormat:@"%02x" , rawHash[i]];
Обратите внимание, что здесь нет управления памятью.
Проверьте запись в Википедии для объяснения хеширования пароля .
Существует множество версий этого кода на межтрубных пространствах.