2010-01-12 13 views
6

Mam kod, który pobiera plik plist z serwera WWW i zapisuje go w katalogu dokumentów telefonu. Obawiam się, że jeśli plik zostanie uszkodzony, wpłynie to na stabilność i wygodę korzystania z aplikacji.Dobra strategia zapewniająca integralność pliku

Kodowanie defensywnie w danych odczytać części aplikacji, ale zastanawiałem się, jakie porady jest tam do sprawdzania integralności pliku na pierwszym miejscu, zanim stary jest ponad napisane. Zastanawiam się nad wprowadzeniem pewnego rodzaju wartości obliczanej, która jest również przechowywana jako klucz w plist na przykład.

Wszelkie przemyślenia na temat tego, jak najsilniejsze z możliwych, byłyby bardzo doceniane.

poważaniem

Dave

+1

to właśnie MD5 dla –

Odpowiedz

5

Wystarczy popatrzeć na CommonCrypto/CommonDigest.h.

Funkcja CC_MD5(const void *data, CC_LONG len, unsigned char *md); oblicza skrót mieszania MD5.

@implementation NSData (MD5) 

-(NSString*)md5 
{ 
    unsigned char digest[CC_MD5_DIGEST_LENGTH]; 
    CC_MD5([self bytes], [self length], digest); 

    NSString* s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", 
        digest[0], digest[1], 
        digest[2], digest[3], 
        digest[4], digest[5], 
        digest[6], digest[7], 
        digest[8], digest[9], 
        digest[10], digest[11], 
        digest[12], digest[13], 
        digest[14], digest[15]]; 
    return s; 

} 

@end 

W ramach rozmieszczania plików na serwerze można użyć OpenSSL do obliczenia skrótów. Komenda openssl md5 filename oblicza skrót mieszania MD5 dla pliku. To może być zintegrowane ze skryptem.

Następnie, po pobraniu pliku przez aplikację, oblicza wartość skrótu pobranego pliku i porównuje go z hasłem zapisanym na serwerze.

Oczywiście, jeśli chcesz zapewnić integralność plika plist, ten plik plist nie może zawierać własnego skrótu.

+0

Dziękuję Gregory, to jest naprawdę pomocne. Nie przypuszczam, że wiesz, że w ten sposób stanowi wykorzystanie kryptografii w aplikacji? Mam na myśli pytanie, które otrzymujesz, przesyłając aplikację do sklepu z aplikacjami. Pozdrawiam Dave. –

+0

Nie martw się, Twoja aplikacja nie zostanie odrzucona z powodu obliczenia skrótu MD5. –

+0

+1 za sugerowanie tego. – Sudhanshu

Powiązane problemy