En el iPhone, la zona de pruebas impedirá que cualquiera acceda a sus contraseñas. en el escritorio no es tan fácil.
Debe almacenar las contraseñas como hash en lugar de texto claro. Creo que esto le dará los resultados que desea sin afectar la funcionalidad. Lo único que nunca podrá hacer es acceder de nuevo a la contraseña de texto simple, si desea analizarla para obtener más información o pasarla a otro servicio. En general, sin embargo, los hashes no sacrificarán la funcionalidad.
El código siguiente historia tiene una contraseña en rawPassword y almacena el hash SHA-1 en 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]];
Tenga en cuenta que aquí no hay administración de memoria.
Mira la entrada de Wikipedia para una explanation of password hashing.
Hay muchas versiones de este mismo código alrededor de los intertubos.
¿Por qué específicamente necesita almacenarlos en una cadena y por qué hay personas tratando de llegar a esa memoria? –