如何加密iPhone中的文件(PDF文件)

时间:2011-02-14 07:44:37

标签: iphone ipad encryption

我正在开发一个电子书阅读器并将ipa文件发送给不同的人。 ipa文件包含一些PDF书籍。有没有办法可以加密PDf文件,这样用户只能在设备上看到它们而不是在PC上...谢谢

2 个答案:

答案 0 :(得分:1)

这是一个普遍的安全问题,答案是:否。如果一个设备(iPhone)可以在没有密码或秘密设备密钥等其他数据的情况下解密文件,则另一台设备(台式计算机)也可以这样做。

您所能做的就是对文件进行模糊处理。这将使人们不会简单地解压缩ipa并打开PDF。但是,您采取的任何措施都会使访问文件变得更加困难。没有办法让技术人员获得数据不可能

答案 1 :(得分:0)

您可以使用数据保护重新保存捆绑包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来隐藏文件扩展名。

编辑:

如果您不希望用户能够解压缩ipa并且您认为扩展模糊不够,那么您将不得不将pdf放入捆绑包中并将其从网络中拉下来。< / p>