Как зашифровать файлы в iPhone (файлы PDF) - PullRequest
1 голос
/ 14 февраля 2011

Я занимаюсь разработкой электронных книг и отправляю файлы ipa различным людям.Файлы ipa содержат некоторые книги в формате PDF.Есть ли способ, которым я могу зашифровать файлы PDf, так что пользователь может видеть их только на устройстве, а не на ПК ... спасибо

Ответы [ 2 ]

1 голос
/ 14 февраля 2011

Это общий вопрос безопасности, и ответ таков: нет. Если одно устройство (iPhone) может расшифровать файлы без дополнительных данных, таких как пароль или секретный ключ устройства, другое устройство (настольный компьютер) также может сделать это.

Все, что вы можете сделать, это запутать файлы.Это не позволит людям просто распаковать ipa и открыть PDF-файлы.Но любая мера, которую вы принимаете, затрудняет доступ к файлам.Там нет никакого способа сделать это невозможно для квалифицированного специалиста, чтобы получить данные.

0 голосов
/ 14 февраля 2011

Вы можете повторно сохранить PDF-файл пакета, используя защиту данных, он не пуленепробиваемый, но затрудняет чтение данных (особенно, если пароль неизвестен), однако он работает только в том случае, если устройства имеют код-пароль.

//There is probobly a quicker way to do this..ie..iterating the bundle programatically for pdf's
NSMutableArray * a = [[NSMutableArray alloc] init];     
    [a addObject:[NSString stringWithFormat:@"pdf1.pdf"]];
    [a addObject:[NSString stringWithFormat:@"pdf2.pdf"]];
    [a addObject:[NSString stringWithFormat:@"pdf3.pdf"]];
    [self resaveFilesWithProtection:a]; 
    [a release];



    -(void)resaveFilesWithProtection:(NSArray*)fileNameArray
    {

        NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString * DocPath = [paths objectAtIndex:0];       
        NSFileManager *fileManager = [NSFileManager defaultManager];                        

        for (NSString* s in fileNameArray) {        

        NSString * fullFilepath = [DocPath stringByAppendingPathComponent:s];//getting path to file 
            NSData *myData = [NSData dataWithContentsOfFile:filePath];//getting data out of old file    
        [fileManager removeItemAtPath:fullFilepath error:NULL];//deleting old file

        NSError*er=nil;     
        [myData writeToFile:fullFilepath options:NSDataWritingFileProtectionComplete error:&er];    //saving back to disk with protection       
        }   



  NSLog(@"DONE");
}

Вы также можете сохранить NSData в базе данных SQLite или скрыть расширения файлов, повторно сохранив их как .anything.

Edit:

Если вы не хотите, чтобы пользователь мог разархивировать ipa, и считаете, что скрытие расширений недостаточно, вам придется не помещать файлы pdf в пакет и извлекать их из сети.

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