Su iPhone, la sandbox impedisce a chiunque l'accesso alle password. sul desktop non è così facile.
È necessario memorizzare le password come hash anziché come testo in chiaro. Credo che questo ti porterà i risultati desiderati senza intaccare la funzionalità. L'unico pensiero che non sarai mai in grado di fare è di accedere nuovamente alla password di cleartext - se vuoi analizzarlo per forza o passarlo a un altro servizio. In generale, tuttavia, gli hash non sacrificano la funzionalità.
Il seguente codice accetta una password in rawPassword e memorizza il suo hash SHA-1 in 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]];
Nota che non è presente la gestione della memoria.
Controllare la voce wikipedia per explanation of password hashing.
Esistono molte versioni di questo stesso codice attorno agli intertubes.
fonte
2009-04-15 07:16:29
Perché è necessario archiviarli in una stringa e perché ci sono persone che cercano di ottenere quella memoria? –